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

如何在django查询中过滤外键对象?

在Django查询中过滤外键对象可以使用双下划线(__)来实现。双下划线用于在查询中指定关联模型的字段。

假设有两个模型,一个是主模型A,另一个是关联模型B,B有一个外键指向A。要在查询中过滤A关联的B对象,可以使用以下语法:

代码语言:txt
复制
A.objects.filter(b__field=value)

其中,b是A模型中定义的关联字段的名称,field是B模型中的字段名,value是要过滤的值。

例如,如果有一个模型Book和一个模型Author,Book有一个外键指向Author,要查询所有作者名为"John"的书籍,可以使用以下代码:

代码语言:txt
复制
Book.objects.filter(author__name="John")

这将返回一个查询集,其中包含所有作者名为"John"的书籍。

在这个例子中,关联字段的名称是author,Author模型中的字段是name。

推荐的腾讯云相关产品:腾讯云数据库MySQL、腾讯云对象存储COS。

腾讯云数据库MySQL是一种高性能、可扩展的关系型数据库服务,可满足各种规模的应用需求。它提供了丰富的功能和工具,支持高可用、备份恢复、数据迁移等操作。了解更多信息,请访问:腾讯云数据库MySQL

腾讯云对象存储COS是一种安全、低成本、高可靠的云存储服务,适用于存储和处理各种类型的数据。它提供了简单易用的API和丰富的功能,支持数据的上传、下载、管理和分享等操作。了解更多信息,请访问:腾讯云对象存储COS

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python测试开发django-37.(ForeignKey)查询

前言 前面在admin后台页面通过设置,可以选择下拉框的选项,本篇主要讲解关于(ForeignKey)的查询 models设计 在上一篇的基础上新增一个BankName表,Card表通过关联到...反向查询,当ForeignKey没设置related_name参数,默认是通过关联表的名称加_set去查询 查询结果是QuerySet集合对象 count()函数统计查询个数 [0].card_id 下标取值...(ForeignKey)只有一个时,可以通过_set去查询到,当有多个时,就无法查询具体哪个了,这时候就需要加个related_name参数。...verbose_name_plural = '银行卡账户' def __str__(self): return self.card_id related_name参数相当于给这个取了个别名...,方便多个时候去识别。

1.6K20
  • django在开发取消约束的实现

    # 在setting设置 'OPTIONS': { "init_command": "SET foreign_key_checks = 0;", } 补充知识:django-给关系传值...''' 两种方法 教室ClassRoom和教室编号ClassNumber 字段在django类里名(room_number)在数据库名(room_number_id) '''      # 一.1...赋值对象字段 # room_number = ClassNumber.objects.filter(class_number__exact='003')[0] # d对List切片 # c...字段在django类里名(room_number)在数据库名(room_number_id)      c.save() return HttpResponse("ojbk") 多对一: 类似一对一...s.teacher.remove(x) return HttpResponse("ojbk") 以上这篇django实现在开发取消约束就是小编分享给大家的全部内容了,希望能给大家一个参考。

    3.7K10

    DjangoQ查询及Q()对象 F查询及F()对象

    models.Test.objects.get(name="cox") obj.times = F("times") + 1 obj.save() obj.save() obj.save() ---- #2.3 F()再过滤...("output_price")) Django支持F()对象使用加、减、乘、除、取模和幂运算等算术操作,两个操作数可以是常数或F()对象 models.Test.objects.filter(input_price...__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...获取在Author表,name等于cox并且age等于12的所有数据 #2.5 Q()传入条件查询 q1 = Q() q1.connector = 'OR' q1.children.append(('

    78120

    Django学习-第七讲:django 的常用字段、字段属性,和表关系、操作

    和表关系 在MySQL,表有两种引擎,一种是InnoDB,另外一种是myisam。如果使用的是InnoDB引擎,是支持约束的。的存在使得ORM框架在处理表关系的时候异常的强大。...因此这里我们首先来介绍下Django的使用。 类定义为class ForeignKey(to,on_delete,**options)。...因此在底层,Django为Article表添加了一个属性名_id的字段(比如author的字段名称是author_id),这个字段是一个,记录着对应的作者的主键。...如果一个模型使用了。...那么将会获取SET函数的值来作为这个的值。SET函数可以接收一个可以调用的对象(比如函数或者方法),如果是可以调用的对象,那么会将这个对象调用后的结果作为值返回回去。

    4K30

    DjangoQ查询及Q()对象 F查询及F()对象用法

    __gt=F(‘pub_date’) + timedelta(days=3)) #2.4 Django Q()表达式 当我们在查询的条件需要组合条件时(例如两个条件“且”或者“或”)时。...name不等于cox的所有数据 补充知识:Django 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()对象用法就是小编分享给大家的全部内容了,希望能给大家一个参考。

    1.5K20

    django 2.x版本models.ForeignKey()说明介绍

    2、to_field表示健关联的主键 3、on_delete有多个选项 在django2.0后,定义和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错...SET_NULL:此值设置,会把设置为null,前提是允许为null。 SET_DEFAULT:此值设置,会把设置为的默认值。 SET():此值设置,会调用外面的值,可以是一个函数。...当我们查询一个组有那些用户的时候,就会用到当前的健, 创建记录 并且,在class定义了foreignKey之后,group还不存在的同时,user表也因为约束的原因,不能被进行创建 删除记录 并且...,在class定义了foreignKey之后,user记录存在的同时,group表的记录也因为约束的原因,不能被进行删除 补充知识:owner = models.ForeignKey(User)...2.x版本models.ForeignKey()说明介绍就是小编分享给大家的全部内容了,希望能给大家一个参考。

    1.2K20

    Django 2.2文档系列】Model 的on_delete参数用法

    场景 我们用Django的Model时,有时候需要关联。关联时,参数:on_delete的几个配置选项到底是干嘛的呢,你知道吗? 参数介绍 models.CASCADE 级联删除。...Django会模拟SQL约束的行为,在删除此条数据时,同事删除外关联的对象。...” models.PROTECT 防止删除引用的对象。与上个恰恰相反,是防止关联数据被删除。 models.SET_NULL 设置关联的内容为null。只有设置了null=True时可用。...当数据被删除时,被关联的内容被设置为null。 models.SET_DEFAULT 将的值设置为默认值。必须设置有默认值 。...如果后端数据库有强制关联操作,这是容易报错:IntegrityError,除非你在数据库手动添加了SQL的ON DELETE约束。

    2K10

    Django基表的创建、字段属性简介、脏数据概念、子序列化

    通过逻辑将A、B表进行连表查询,不会有任何异常。两张表建立了一对一字段,在A表,那么先往B表写数据就更合理。...假设图书管理系统书、出版社、作者、作者详细信息四张表之间的关系如下: """ 表关系 1)Book 和 Publish 一对多:在多的一方 Book 2)Book 和 Author 多对多:查询频率高的一方...更合理) """ Django orm中外字段属性详解 在建表之前我们对外字段属性进行了解: 1)related_name在外设置反向查询的字段名:正向找字段名,反向找related_name...子序列化 Django的子序列化的功能是:通过跨表查询数据然后对跨表查到的数据反序列化。...如果涉及到通过进行跨表查询,然后再将查询数据反序列化到前台就需要用到子序列化,比如下面的例子:我们查询出版社信息的时候连带将book表的该出版社所出版过的书名一并查出来。

    4.3K30

    何在 ES 实现嵌套json对象查询,一次讲明白!

    一、简介 实际的软件项目开发过程,因为业务上的需要,我们的数据库表与表之间的结构是一对多的关系,以订单表与订单项表为例,在 mysql 数据库里面,他们的关系如下图: 如果我们想查询哪些商品在某个时间段内被购买过...我们再来试试在 ES 通过商品名称和品牌名称,两个并集的条件筛选,来查询客户的订单信息,编写DSL查询语句,搜索商品名称为火腿肠并且品牌为汇源的订单,内容如下: POST order_index/_search...可以看到嵌套文档的方案其实是对普通内部对象方案的补充。我们将上面的订单索引结构的orderItems数据类型,将其改成nested类型,重新创建索引。...如果一个订单,有1000个订单项,那么在 ES 存在的文档数就是1001,会随着订单数的增加而成倍上升。 那可想而知,同样的条件下,这个性能肯定不如普通内部对象的方案。...在实际的业务应用要根据实际情况决定是否选择这种方案。 有一点是可以肯定的是,他能满足内部对象数据精准搜索的要求!

    8.6K50

    Django 模型查询2.3

    简介 查询集表示从数据库获取的对象集合 查询集可以含有零个、一个或多个过滤过滤器基于所给的参数限制查询的结果 从Sql的角度,查询集和select语句等价,过滤器像where和limit子句 接下来主要讨论如下知识点...查询集 字段查询:比较运算符,F对象,Q对象 查询集 在管理器上调用过滤器方法会返回查询查询集经过过滤器筛选后返回新的查询集,因此可以写成链式过滤 惰性执行:创建查询集不会带来任何数据库的访问...):一个对象构成一个字典,然后构成一个列表返回 写法: filter(1=值1,2=值2) 等价于 filter(1=值1).filter(2=值2) 返回单个值的方法 get():返回单个满足条件的对象...()、exclude()、get()的参数 语法:属性名称__比较运算符=值 表示两个下划线,左侧是属性名称,右侧是比较类型 对于,使用“属性名_id”表示的原始值 转义:like语句中使用了%...(bpub_date__lt=F('bpub_date') + timedelta(days=1)) Q对象 过滤器的方法关键字参数查询,会合并为And进行 需要进行or查询,使用Q()对象 Q对象(

    2.4K20

    Django教程 —— 模型类条件查询

    引言 在之前的 Django模型设计 简单的介绍了如何利用模型类对数据库进行增删改查,在这篇主要介绍使用模型类对数据库进行条件查询。让大家更加熟悉 Django 操作数据库。...通过 属性名_id 表示对应对象的 id 值。 语法如下: 属性名称__比较运算符=值 说明:属性名称和比较运算符间使用两个下划线,所以属性名不能包括多个下划线。...答:使用 F对象,被定义在 django.db.models 。 语法如下: F(属性名) 例:查询阅读量大于等于评论量的图书。...,需要使用 Q对象 结合 | 运算符,Q对象 被定义在 django.db.models 。...,格式如下: {'聚合类小写__属性名':值} : {'sum__read': 29000} 使用 count 时一般不使用 aggregate() 过滤器。

    1.1K20

    Django框架学习(三)

    | 过滤器(参数...)}} b) Django模板过滤器的使用: {{ 模板变量 | 过滤器:参数 }} 注意:Django过滤器:号之后只能接收一个参数 ?...4.数据库 ORM框架: 作用:将模型类和数据表进行对应,通过面向对象的方式进行数据库的操作。 flaskSQLALchemy Django自带ORM框架,可以直接进行使用。...,默认值是False 在设置时,需要通过on_delete选项指明主表删除数据时,对于引用表数据如何处理,在django.db.models包含了可选常量: CASCADE 级联,删除主表数据时连通一起删除外数据...PROTECT 保护,通过抛出ProtectedError异常,来阻止删除主表中被应用的数据 SET_NULL 设置为NULL,仅在该字段null=True允许为null时可用 4.3迁移生成数据表...工具提供了shell命令,帮助我们配置好当前工程的运行环境(连接好数据库等),以便可以直接在终端执行测试python语句。

    1.8K40

    Django相关知识点回顾

    Flaskrequest请求对象的属性 Djangorequest请求对象的属性 说明 args GET 查询字符串参数 form POST 请求体的表单数据 data body 请求体的原始...|过滤器(参数...)}} b) Django模板过滤器的使用 {{ 模板变量|过滤器:参数 }} 注意:Django过滤器 :之后只能接收一个参数 13.3步骤 13.3.1数据库连接配置 flask...class Meta: db_table = '' 定义属性: # 表中外字段名格式: hbook = models.ForeignKey('BookInfo...()过滤器调用聚合函数 排序: 排序默认是升序,降序在排序字段前加- 使用order_by 关联查询: 1.查询和指定对象关联的数据 # 由1查多 一对象.多类名小写_set.all() 例:book.heroinfo_set.all...() # 由多查1 多对象.属性 例:hero.hbook 2.通过模型类进行关联查询 # 查图书(一) 一类.objects.get|filter(多类名__字段__条件=值) 例:books =

    10K51

    Django 模型层之多表操作

    Author) def __str__(self): return self.name 注意事项: 1.id字段不写的话会自动添加 2.对于字段,Django会在字段名上添加..."_id"来创建数据库的列名 3.字段ForeignKey有一个null=True的设置,你可以赋给它空值None 二.添加表记录 一对一: # 方式一: detail_obj = models.AuthorDetail.objects.filter...(name='Yven') hwt = models.Author.objects.get(name='hwt') # 绑定多对多关系 # add可以传递对象,可以传递id,也可以传递*列表:(*...所有Django为我们提供了F表达式来完成这类操作 导入包: from django.db.models import F :查询comment_num数量大于read_num的书籍 models.Book.objects.filter...'AND'的,如果需要执行复杂的查询,就需要使用Q对象 导入包:from django.db.models import Q 可以使用"&"或者"|"或者"~"来组合Q对象,分别表示与,或,非逻辑 :

    1.3K20

    Django-Multitenant,分布式多租户数据库项目实战(PythonDjango+Postgres+Citus)

    目录 项目源码 安装 支持的 Django 版本/前提条件。 用法 模型变化 使用 mixins 更改模型 在 db 层自动化复合: 在哪里设置租户?...支持的 API Python/Django 支持分布式多租户数据库, Postgres+Citus。...: 在 db 层自动化复合: 使用 TenantForeignKey 在租户相关模型之间创建将自动将 tenant_id 添加到引用查询(例如 product.purchases)和连接查询(例如...如果要确保在 db 层创建复合(带有 tenant_id),则应将 settings.py 的数据库 ENGINE 更改为 django_multitenant.backends.postgresql...只需在身份验证时设置它,库将确保其余部分(将 tenant_id 过滤器添加到查询)。上面的示例实现如下: 在您的设置,您需要更新 MIDDLEWARE 设置以包含您创建的设置。

    1.9K10
    领券