首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

django select_related和prefetch_related用法与区别

专业和业余之前区别就在细节处理上。为了让大家更直观地看到这两个方法作用,我们将安装使用django-debug-toolbar这个流行Django第三方包。...,如下图所示: 言归正传 假设我们有如下一个文章(Article)模型,其与类别(Category)是单对多地关系(ForeignKey), 与标签(Tag)是多对多关系(ManyToMany)。...Django提供了prefect_related方法来解决这个问题。prefect_related可用于多对多关系字段,也可用于反向外键关系(related_name)。...我们对之前article_list视图函数再做进一步修改,在查询文章列表同时返回相关tags信息。...对与单对单或单对多外键ForeignKey字段,使用select_related方法 对于多对多字段和反向外键关系,使用prefetch_related方法 两种方法均支持双下划线指定需要查询关联对象字段

1.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

Django 之 Models(Models 模型 & 数据表关系

欢迎阅读本专栏其他文章 Django 之路由篇 Django 之视图篇 Django 之模板篇 Models 模型 ORM --- ObjectRelationMap...: 把面向对象思想转换成关系数据库思想,操作上把类等价于表格 类对应表格 类属性对应表字段 在应用models.py 文件定义class 所有需要使用ORMclass都必须是 models.Model...子类 class 所有属性对应表格字段 字段类型都必须使用 modles.xxx 不能使用python类型 在django,Models 负责跟数据库交互 django连接数据库 自带默认数据库...ORM class都必须是models.Models 子类 class所有属性对应表格字段 字段类型都需使用 models.xxx 不能使用python 类型 字段常用参数 --- max_length...,每次迁移前可以把系统自带sqlite3数据库删除 数据相关操作 查看数据库数据 1.

2.3K87

Django-models & QuerySet API

django配置mysql数据库 查询queryset时如果需要选取查询集中某个子集字段时, 应该用切片,或者first 选择某个子集对象,这样才能够使用到 子集字段,直接queryset后选择字段会直接报错...一是在INSTALLED_APPS里面加入app名称; 二是配置数据库相关信息 View Code 定义数据库表结构  models.py 使用orm框架,不需要编写原生sql语句 from django.db...从数据库查询出来结果一般是一个QuerySet集合。...birthday__month=12) # __month # 大小 gt,lt,gte,lte >>> models.Person.objects.filter(age__lte = 20) # 一个表里面两个字段大小对比...(补充)关系字段 多对一    ForeignKey 多对多   ManyToManyField 例如:学生跟老师是多对多关系,学生跟学校是多对一关系: vim models.py models.ForeignKey

1.4K20

django 1.8 官方文档翻译: 2-5-6 多数据库

这个方法还可以用来决定一个给定数据库上某个模型可用性。 注意,如果这个方法返回False,迁移将默默地不会在模型上做任何操作。这可能导致你应用某些操作之后出现损坏外键、表多余或者缺失。...如果myapp任何一个模型包含与其它 数据库之外模型关联,这个例子将不能工作。跨数据关联引入引用完整性问题,Django目前还无法处理。...在这个例子,AuthRouter在PrimaryReplicaRouter之前处理,因此auth模型查询处理在其它模型之前。...目前不提供跨多个数据库外键或多对多关系支持。...因为跨数据库关联是不可能,这对你如何在数据库之间划分这些模型带来一些限制: contenttypes.ContentType、sessions.Session和sites.Site 可以存储在分开存储在不同数据库

1.5K20

何在 Spring Boot 读写数据

JPQL查询语言:以面向对象方式来查询数据。 1.3 Hibernate Hibernate 框架可以将应用数据模型对象映射到关系数据库表技术。...如何在 Spring Boot 读写数据 (5)@Basic 指定类变量读取方法到数据库表字段映射关系。对于没有任何特殊注解getXxxx()方法,默认带有 @Basic 注解。...CascadeType.ALL | 以上四种策略 无 | 默认值 因为这四种注解只能表示实体之间几对几关系,指定与所操作实体相关数据库表字段,就需要用到 @JoinColumn 注解。...如何在 Spring Boot 读写数据 假设有这样一组实体关系。...,字段默认命名规则为 “附属类名_附属主键”,:password_id。

15.8K10

django写接口(入门篇)

入门:视图及模版》 《django入门:Admin管理系统及表单》 《django入门:通用视图类重构视图》 之前5篇讲Web界面相关,而接下来3篇则会讲与接口有关,接口是每个移动端开发者都会接触到东西...) 3 创建 rest view 函数 rest_framework 类似 django,需要通过 view 来展示接口返回数据信息,在 views.py 创建视图函数 from django.views.decorators.csrf...获取详情 通过上面的两个例子,我们发现 tags 字段返回信息只有 id,但是很多时候我们需要具体信息,如果只返回一个 id 的话就是说我们还要用 tag id 再去做请求获取具体 tag 信息...,太麻烦了,我们对 model 存在 ForeignKey 和 MaynToMany 链表结构字段做些必要调整,使其能够返回全部信息。...# 首先我们在 model 增加两个链表结构字段,同时创建相关 model 并生成数据库 class PostModel(models.Model): # ....

2.8K30

Django 多对多字段更新和插入数据实例

从图可以看出生成了三张表,一个是book(书籍)表包含id,title两个字段,一个是author(作者表)包含id,name,email三个字段,这是我们刚刚在models.py文件创建两个模型,但是有一点需要注意是在...从多对多字段删除值(删除多对多关系): ?...,Django允许指定一个用于管理多对多关系中间模型,然后就可以把这些额外字段添加到这个中间模型,具体方法就是在ManyToMany字段中指定through参数指定作为中介中间模型,修改上述models.py...,这两个外键定义了两个模型之间是如何关联到一起 所以当创建多对多关系模型时候提倡使用through参数去指定并创建中间模型,这样比较方便我们进行字段扩展 那么此时我们又该如何添加和删除多对多关系呢...,add(),remove(),create()这些方法都会被禁用,所以在创建这种类型关系时候唯一方法就是通过创建中间模型实例 以上这篇Django 多对多字段更新和插入数据实例就是小编分享给大家全部内容了

4.2K30

Django

,设置了该属性,结果才可以reverse() 5_orm_1 # ORM小练习 如何在一个Python脚本或文件 加载Django项目的配置和变量信息 # 常用查询方法 import os if...所有书(两个字段做比较) from django.db.models import F # ret = models.Book.objects.filter(kucun__gt=F("maichu...) | Q(price__lt=100)) # print(ret) # Q查询和字段查询同时存在时, 字段查询要放在Q查询后面 后边与前边是 与关系 # ret = models.Book.objects.filter...= ("author","book") """ # 第三张表无其他字段,第一种 # 有其他字段:第三种 聊天记录,不仅要双方那个id,还有时间,内容.......(在settings.py里面设置 # 从上到下顺序) # 何时执行: # 在urls.py中找到对应关系之后 # 在执行真正视图函数之前 # 返回值: # 返回None,继续执行后续中间件process_view

3.4K20

django写接口(优化篇)

作者:Kuky_xs 博客:https://www.jianshu.com/u/9fcd71535294 前言 系列文章: 《django入门:环境及项目搭建》 《django入门:数据模型》 《django...DRF Request 和 Response。...参考 django 表单部分) Response 是一种 TemplateResponse 采用未呈现内容,通过内容协商来确定正确内容类型以返回给客户端,用法直接 return Response...在结束文章最后,记录自己写时候遇到一个坑,当更新 ManyToMany 字段时候,我们需要重新写 post 方法,直接传 id 是不能更新,直接传 id 是不能更新,直接传 id 是不能更新...# 假设我们 post 有一个 ManyToMany 字段 tags class PostDetailView(APIView): # 更新时候,需要约定好 ManyToMany

2.1K20

Django Xadmin多对多字段过滤实例

在xadmin是不能像原生admin那样使用formfield_for_manytomany方法来过滤多对多字段 ?...补充知识:给django admin后台管理user扩展下拉框及多选框字段 1.首先在models.py编写扩展User所用到userProfile模型及下拉框和多选框选项值所需要模型(因为我所做下拉框和多选框值都是从数据库里面取得...),代码如下: 2.第二步编写admin.py对User字段进行扩展,代码如下: # -*- coding: UTF-8 -*- from django.contrib import admin from...admi台管理User扩展一个下拉框和一个多选框,效果如下图: ?...以上这篇Django Xadmin多对多字段过滤实例就是小编分享给大家全部内容了,希望能给大家一个参考。

1.8K20

Elixir and Pylons 多态继承和自关联关系创建

我们知道,在Elixir和Pylons,多态继承和自关联关系两个独立概念,分别用于处理不同情况。...而在Pylons,多态继承通常由SQLAlchemy提供 polymorphic 关系来实现。下面分别介绍在Elixir和Pylons如何创建多态继承和自关联关系。...2、在 Nav 表,将 before 字段类型从 OneToMany 更改为 ManyToMany,如下:class Nav(Entity): using_options(inheritance...Employee 模型通过 manager_id 外键和 relationship 关联实现了自关联关系,表示员工与其直接下属之间关系。...这里需要注意是,上述示例仅提供了基本概念,实际应用可能需要我们根据具体需求进行更复杂模型定义和关联设置。希望这篇技术文章对您有所帮助。

10310

解决django框架model中外键不落实到数据库问题

在外键字段参数添加db_constraint=False即可,数据库没有外键关系,代码依然可以按照正常外键方式使用。...为了未来数据库扩展,数据库设计时考虑使用外键,但在实际数据库设计时,将外键实现放在逻辑层控制。 全部表都是单表 解决办法是通过SerializerMethodField自定义字段来实现。...model 定义,无外键 # -*- coding:UTF-8 -*- from django.db import models #导入django自带User模型进行扩展 from django.contrib.auth.models...__(self): return self.depat_name class UserProfile(models.Model): """ 在DjangoUser模型上进行拓展,id...用户角色关系,为提高性能,不使用manytomany来实现 """ user_id = models.IntegerField(verbose_name="用户id") role_id =

1.3K10

Django(1)初识Django「建议收藏」

模型:数据存取层,处理与数据相关所有事物,例如如何存取、如何验证有效性、包含哪些行为以及数据之间关系等。 模板:表现层,处理与表现相关决定,例如如何在页面或其他类型文档中进行显示。...视图:业务逻辑层,存取模型及调取恰当模板相关逻辑,模型与模板桥梁 Django主要目的是简便、快速地开发数据库驱动网站。它强调代码复用,多个组件可以很方便地以插件形式服务于整个框架。...Django基于MTV设计十分优美,其具有以下特点: 对象映射关系(Object Relational Mapping, ORM):通过定义映射类来构建数据模型,将模型关系数据库连接起来,使用ORM...功能导入由模块Django.urls实现,from Django.urls import include,path,re_path Admin后台系统:支持主流移动设备并新增属性ModelAdmin.autocomplete_fields...()现在返回一个列表,包含插入失败键值 视图类:ContextMixin,extra_context属性允许在View.as_view()添加上下文 Pagination(分页):增加Paginator.get_page

2.7K20

Django学习笔记之Django ORM Aggregation聚合详解

在当今根据需求而不断调整而成应用程序,通常不仅需要能依常规字段字母顺序或创建日期,来对项目进行排序,还需要按其他某种动态数据对项目进行排序。Djngo聚合就能满足这些要求。...book和author是manytomany关系,我们可以为每本书总结出这种关系。...=Count('authors')).order_by('num_authors') values() 通常,注解annotate是添加到每一个对象上,一个执行了注解操作查询集 QuerySet 所返回结果...就不是在原始 QuerySet 返回结果对每个对象添加注解,而是根据定义在 values() 从句中字段组合对先结果进行唯一分组,再根据每个分组算出注解值,这个注解值是根据分组中所有的成员计算而得...如果有两个作者有相同名字,这两个作者会被当做一个计算,他们books会合在一起。

1K20

统计各个分类下文章数

在我们博客侧边栏有分类列表,显示博客已有的全部文章分类。现在想在分类名后显示该分类下有多少篇文章,该怎么做呢?最优雅方式就是使用 Django 模型管理器 annotate 方法。...模型回顾 回顾一下我们模型代码,Django 博客有一个 Post 和 Category 模型,分别表示文章和分类: blog/models.py class Post(models.Model):...Category 记录,但同时它还会做一些额外事情,在这里我们希望它做额外事情就是去统计返回 Category 记录集合每条记录下文章数。...代码 Count 方法为我们做了这个事,它接收一个和 Categoty 相关模型参数名(这里是 Post,通过 ForeignKey 关联),然后它便会统计 Category 记录集合每条记录下与之关联...将 Annotate 用于其它关联关系 此外,annotate 方法不局限于用于本文提到统计分类下文章数,你也可以举一反三,只要是两个 model 类通过 ForeignKey 或者 ManyToMany

95340

django orm 重点大全

2.orm字段必须要知道一些属性 (0)null 如果为True,Django 将用NULL 来在数据库存储空值。...(3)primary_key 如果为True,那么这个字段就是模型主键。...如果你没有指定任何一个字段primary_key=True, Django 就会自动添加一个IntegerField字段做为主键,所以除非你想覆盖默认主键行为, 否则没必要设置任何一个字段primary_key...在一个给定 model 类实例,想得到某个 choices 字段显示值,就调用 get_FOO_display 方法(这里 FOO 就是 choices 字段名称 )。...,然后再添加就比较容易了,传说中三种方式,貌似实际应用只有save()方式可以使用,原因无他,只有save()能触发django定义一些钩子函数,留下数据更改日志信息,比较安全。

77440

django 字段类型_access数据库类型是

:与模型相关类和on_delete选项,如果创建地柜关系(一个与自身具有多对一关系对象)则使用model.ForeignKey(‘self’,on_delete=models.CASCADE)。...如果需要在尚未定义模型上创建关系,则可以使用模型名称,而不是模型对象本身。...(23) ManyToManyField 多对多关系表,需要一个位置参数:与模型相关类,工作原理与ForeignKey完全相同,包括递归和惰性关系。...(24) OneToOneField 一对一关系关系,从概念上与带有unique=TrueForeignKey相似,但是在关系另一侧(主表数据)直接返回单个对象。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

3.8K30
领券