多表查询是模型层的重要功能之一, Django提供了一套基于关联字段独特的解决方案....ForeignKey字段接受一个Model类作为参数, 类型与被参照的字段完全相同: blog = models.ForeignKey(Blog) ForeignKey.to_field 关联到的关联对象的字段名称...默认地,Django 使用关联对象的主键。...ForeignKey.related_name 这个名称用于让关联的对象反查到源对象. 如果你不想让Django 创建一个反向关联,请设置related_name 为 '+' 或者以'+' 结尾....文档-模型字段-关联字段 django文档 - 执行查询 - 关联的对象 django文档 - 执行查询 - 跨关联关系查询
前言 前面在admin后台页面通过设置外键,可以选择下拉框的选项,本篇主要讲解关于外键(ForeignKey)的查询 models设计 在上一篇的基础上新增一个BankName表,Card表通过外键关联到...makemigrations 和migrate,同步数据 python manage.py makemigrations python manage.py migrate shell模式新增测试 为了调试方便,可以使用django..._set 如果想通过银行名称“上海银行”,查询到此银行关联多少张卡,并且查询其中一个银行卡的信息。...反向查询,当ForeignKey没设置related_name参数,默认是通过关联表的名称加_set去查询 查询结果是QuerySet集合对象 count()函数统计查询个数 [0].card_id 下标取值...)只有一个时,可以通过_set去查询到,当有多个外键时,就无法查询具体哪个外键了,这时候就需要加个related_name参数。
进入到django自带的related.py中,可以看到 1.ForeignKey 初始化的参数有: to, on_delete, related_name=None, related_query_name...models.Model): author = models.CharField(max_length=250) class Books(models.Model): book = models.ForeignKey
on_delete 指的是通过 ForeignKey 连接起来的当前对象被删除后,外键字段进行的操作。...# models.py from django.db import models class Article(models.Model): """ 主题表/文章表 """...verbose_name="所属节点") # models.DO_NOTHING, Article 删除 Node 啥也不干 # D:\Program Files\Python36\Lib\site-packages\django...\db\models\deletion.py def CASCADE(collector, field, sub_objs, using): """ 当前对象删除后,一并删除该对象下的外键信息...collector.add_field_update(field, value, sub_objs) set_on_delete.deconstruct = lambda: ('django.db.models.SET
上一篇Django 2.1.7 模型 - 条件查询、模糊查询、空查询、比较查询、范围查询、日期查询讲述了关于Django模型的查询。...但是都是条件与常量的查询,以及单条件查询,那么本篇章来介绍F对象、Q对象、聚合查询等功能。...参考文献 https://docs.djangoproject.com/zh-hans/2.1/topics/db/queries/ F对象 之前的查询都是对象的属性与常量值比较,两个属性怎么比较呢?...语法如下: F(属性名) 使用F对象需要导入库,如下: from django.db.models import F 下面使用模型来查询 shelves_date < update_time 的结果,如下...`update_time` * 2)) LIMIT 21 Q对象 前面的查询可以看到都是单条件查询,并没有多个条件查询。
对于foreignkey同样可以使用这样的方式进行反向查询展示所有相关的model。...admin Foreignkey ManyToMany list_display展示》 * 本文链接:https://h4ck.org.cn/2019/12/django-admin-foreignkey-manytomanykey-list_display...---- 分享文章: 相关文章: Django REST framework foreignkey 序列化 django raw_id_fields 显示名称而不是id(raw_id_fields:...wp-admin 诡异的404和500错误 再谈《Django 限制访问频率》 Django input value值被截断 Django APScheduler + uwsgi 定时任务重复运行...django 主动抛出 403 异常 ngix+uwsgi+django 以及阿里云rds数据库数据导入
Django Q/F #1 环境 Python3.7.3 Django==2.0.6 #2 开始 #2.1 django F()表达式 每次获取times当前的值,再+1,这样需要将times值取出,...支持F()对象使用加、减、乘、除、取模和幂运算等算术操作,两个操作数可以是常数或F()对象 models.Test.objects.filter(input_price__gt=F("output_price...带有双下划线的F()对象将引入任何需要的join 操作以访问关联的对象 models.Test.objects.filter(authors__name=F('blog__name')) 对于date...__gt=F('pub_date') + timedelta(days=3)) #2.4 Django Q()表达式 当我们在查询的条件中需要组合条件时(例如两个条件“且”或者“或”)时。...我们可以使用Q()查询对象 from django.db.models import Q models.Author.objects.filter(Q(name="cox") | Q(name="Tom
产生背景 当 ForeignKey 数据过多,手动在后台添加时不方便找到自己的想要数据,遂想要一个可以搜索检索数据功能。...检索文档 https://stackoverflow.com/questions/30214469/in-django-admin-how-to-add-filter-or-search-for-foreign-key-select-box.../50356922 With this you can use the autocomplete_fields on a foreignkey field on your source admin class
OneToOneField与ForeignKey加上unique=True效果基本一样,但是用OneToOneField反向关联会直接返回对象。...: from django.db import models class Car(models.Model): manufacturer = models.ForeignKey( 'Manufacturer...,可以通过字典,函数或者查询值来设置 related_name 可以指定关联的类在本类中的名称,通过这一参数可以用两个字段名引用同一个类,通过这个名称父类可以取得子类的值,默认为字段名 related_query_name...用于filter函数过滤和values函数 to_field 关系关联的相关对象名称 db_constraint 控制在数据库中是否应该建立这一字段的约束 swappable 用于控制这一字段对于可交换类模型的行为...以上这篇基于Django OneToOneField和ForeignKey的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考。
当多个Q()对象组合起来时,Django会自动生成一个新的Q()。...如果你需要执行更复杂的查询(例如OR 语句),你可以使用Q 对象。 Q 对象 (django.db.models.Q) 对象用于封装一组关键字参数。...例如,下面的Q 对象封装一个LIKE 查询: from django.db.models import Q Q(question__startswith='What') Q 对象可以使用& 和| 操作符组合起来...另见 Django 单元测试中的OR 查询示例演示了几种Q 的用法。...传Q对象,构造搜索条件 首先还是需要导入模块: from django.db.models import Q 传入条件进行查询: q1 = Q() q1.connector = 'OR' q1.children.append
上一篇Django 2.1.7 模型 - 条件查询、模糊查询、空查询、比较查询、范围查询、日期查询讲述了关于Django模型的查询。...但是都是条件与常量的查询,以及单条件查询,那么本篇章来介绍F对象、Q对象、聚合查询等功能。...参考文献 https://docs.djangoproject.com/zh-hans/2.1/topics/db/queries/ F对象 之前的查询都是对象的属性与常量值比较,两个属性怎么比较呢?...语法如下: F(属性名) 使用F对象需要导入库,如下: from django.db.models import F 下面使用模型来查询 shelves_date < update_time 的结果...`update_time` * 2)) LIMIT 21 Q对象 前面的查询可以看到都是单条件查询,并没有多个条件查询。
我们可以使用Q()查询对象 from django.db.models import Q models.Author.objects.filter(Q(name="cox") | Q(name="Tom...中 Models 的 F()和 Q()函数 1、F() —- 专门取对象中某列值的操作 F对象允许Django在未实际链接数据的情况下具有对数据库字段的值的引用。...BookInfo.objects.filter(auth="小明").update(price=F("price")+10) 2、Q() —- 对对象的复杂查询 Q对象是Django对model查询中所使用的关键字参数进行封装后的一个对象...Q对象可以通过 &(与)、 |(或)、 ~(非)运算来组合生成不同的Q对象,便于在查询操作中灵活地运用。...中Q查询及Q()对象 F查询及F()对象用法就是小编分享给大家的全部内容了,希望能给大家一个参考。
六、基于对象的跨表查询 正向与反向查询 关键在于ForeignKey字段写的位置。...() price=models.DecimalField(max_digits=5,decimal_places=2) #decimal(16,2) publishs=models.ForeignKey...正向查询 正向查询靠对象,取到数据对象后,通过点操作符对外键操作,就能拿到外键的对象,从而取到内容 author_obj = models.Author.objects.filter(name='admin...').first() result = author_obj.authorDetail.telephone 反向查询 查到对象后,通过小写的表名来获取另一个表的属性 author_detail_obj...与一对一较为类似 book_obj = models.Book.objects.get(title='第二本书') result = book_obj.publishs.name 反向查询 注意对象调用的是加
Q对象: 优势:可以实现 与|或|非 组合查询。...(~Q(id=3)) # ~表示not,查询编号不等于3的图书 F对象: 优势:能利用当前obj的值进行比较。...(bread__gt=20)这样的查询 ,有了F对象你就可以和当前obj的属性值进行比较了。...结果可能让意想不到,结果是一个包含多个重复值的查询集,置于为什么会重复,我并没用做深入调查,但是这在django ORM多表查询中会经常遇到,这就是网上说的一般的情况下,QuerySet 中不会出来重复的...利用Q对象与F对象进行查询的实现就是小编分享给大家的全部内容了,希望能给大家一个参考。
Django2.0中编写models类下的ForeignKey book = models.ForeignKey(‘BookInfo’) django2.0与之前的1.8不同, 错误: book...’ 解决方法: book = models.ForeignKey(‘BookInfo’, on_delete=models.CASCADE,) 加上on_delete参数就可以了!!!...补充知识:Django ForeignKey ondelete CASCADE:删除一并删除关联表下的所有的信息; PROTECT:删除信息时,采取保护机制,抛出错误:即不删除关联表的内容; SET_NULL...才将关联的内容置空; SET_DEFAULT:设置为默认值; SET( ):括号里可以是函数,设置为自己定义的东西; DO_NOTHING:字面的意思,啥也不干,你删除你的干我毛线关系 以上这篇完美解决Django2.0...中models下的ForeignKey()问题就是小编分享给大家的全部内容了,希望能给大家一个参考。
之前已经写过一篇关于Django外键的文章,但是当时并没有介绍如何根据外键对数据的操作,也就是如何通过主表查询子表或者通过子表查询主表的信息 首先我定义了两个模型,一个是老师模型,一个是学生模型,...,并获取老师的相关信息 返回一个teacher对象,接下来就是查询teacher相关联的学生对象,在这里有一个需要注意的点,django默认情况下每一个主表的对象都有一个是外键的属性,可以通过它查询到所有关于子表的信息...从上图可以看到和之前的_set操作的效果是一样的,这两个方法是相同的,所以如果觉得比较麻烦的话,可以在定义主表的外键的时候,直接就给外键定义好名称使用related_name 上面的查询主要是通过主表查询子表的信息...下面说一下如何通过子表查询主表的相关信息,也就是查询一个学生所对应的老师的信息 首先需要先获取一个子表的对象,那么就可以通过定义外键时候的那个外键的字段名获取关于主表的信息了...比如我得到了一个student对象,然后我想要得到这个student对象对应的主表teache中的信息的话,就使用 student.teacher 获取,其中这个teacher就是在子表中定义的外键字段
那么不使用外键约束的情况下使用 Django ORM 如何实现关联查询两个表呢?这曾是困扰我很久的一个问题,今天终于找到了答案,写出来分享一下。...Django 的 ForeignKey 和数据库的 FOREIGN KEY 并不一样。...Django 的 ForeignKey 是一种逻辑上的两个表的关联关系,可以指定是否使用数据库的 FOREIGN KEY 约束。...的反向关联查询,以下查询仍然会返回正确的结果: Province.objects.filter(cities__name=’xxx’) 实际执行的 SQL 为一个 Inner Join 查询:...以上这篇Django ForeignKey与数据库的FOREIGN KEY约束详解就是小编分享给大家的全部内容了,希望能给大家一个参考。
多对一关系 多对多关系 一对一关系 多对一 django是使用django.db.models.ForeignKey 定义多对一关系 ForeignKey需要一个位置参数来指定本Model关联的Model...,ForeignKey关联的Model 是"一", ForeignKey所在的Model是"多" 比如汽车和制造商的例子,一辆汽车只能属于一个制造商,但是一个制造商有多辆汽车,这个关系,用Django...(Manufacturer) name = models.CharField(max_length=30) 多对一查询 正向查询( ForeignKey 所在的模型查询关联的模型) car =...Car.objects.get(pk=2) car.manufacturer #返回一条Manufacturer 对象 反向查询( ForeignKey 指向的模型查询ForeignKey 所在的模型)...clear() #从关联的对象集中删除所有的对象 多对多 要实现多对多,就要使用django.db.models.ManyToManyField类,和ForeignKey一样,它也有一个位置参数,用来指定和它关联的
在 Citus 中分发数据 将 Django 应用程序更新为范围查询 使用中间件自动化 更多 在 确定分布策略 中,我们讨论了在多租户用例中使用 Citus 所需的与框架无关的数据库更改。...将租户列介绍给我们想要分发的缺少它的模型 更改分布式表的主键以包含租户列 更新模型以使用 TenantModelMixin 分发数据 将 Django 应用程序更新为范围查询 准备横向扩展多租户应用程序...实现这一点的最简单方法是在属于帐户的每个对象上简单地添加一个 account_id 列。...将 Django 应用程序更新为范围查询 上一节讨论的 django-multitenant 库不仅对迁移有用,而且对简化应用程序查询也很有用。该库允许应用程序代码轻松地将查询范围限定为单个租户。...它会自动将正确的 SQL 过滤器添加到所有语句中,包括通过关系获取对象。
from django.shortcuts import render from .models import Book # Create your views here. def index(req)...Book.objects.filter(name__contains="python") return render(req,"index.html",{"books":books}) name__后面有很多模糊查询的方法...同理,price字段支持大于等于 小于等模糊查询,日期支持查询某月的某年的等查询方法。
领取专属 10元无门槛券
手把手带您无忧上云