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

Django/GAE:如何过滤外键上的查询集?

在Django/GAE中,可以使用查询集(QuerySet)的过滤方法来过滤外键上的查询集。下面是一些常用的过滤方法:

  1. filter():根据指定的条件过滤查询集,返回满足条件的对象。
  2. exclude():根据指定的条件排除查询集中的对象,返回不满足条件的对象。
  3. annotate():对查询集进行注解,可以添加计算字段或聚合函数。
  4. order_by():对查询集进行排序,可以指定字段名和排序方式。
  5. values():返回一个字典序列,包含指定字段的值。
  6. distinct():去除查询集中的重复对象。

以下是一个示例,演示如何在Django/GAE中过滤外键上的查询集:

假设有两个模型,一个是Book模型,另一个是Author模型,它们之间存在外键关系。

代码语言:python
复制
from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)

现在,我们想要获取所有作者名字为"John"的书籍。可以使用filter()方法来实现:

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

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

除了上述示例,Django/GAE还提供了许多其他的过滤方法和查询操作,可以根据具体需求选择合适的方法。更多详细信息和示例,请参考Django官方文档

腾讯云相关产品和产品介绍链接地址:

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

相关·内容

django 1.8 官方文档翻译: 2-2-1 执行查询

执行查询 一旦你建立好数据模型之后,django会自动生成一套数据库抽象API,可以让你执行增删改查操作。这篇文档阐述了如何使用这些API。关于所有模型检索选项详细内容,请见数据模型参考。...在 Django 删除对象时,会模仿 SQL 约束 ON DELETE CASCADE 行为,换句话说,删除一个对象时也会删除与它相关联对象。...你可以设置和获得属性。正如你所期望,改变行为并不引发数据库操作,直到你调用 save()方法时,才会保存到数据库。...设置(它允许接受空值 NULL),你可以赋给它空值 None 。...其后根据访问时这个实例,就会从缓存中获得它。

4.3K20

Django 模型查询2.3

简介 查询表示从数据库中获取对象集合 查询可以含有零个、一个或多个过滤过滤器基于所给参数限制查询结果 从Sql角度,查询和select语句等价,过滤器像where和limit子句 接下来主要讨论如下知识点...查询 字段查询:比较运算符,F对象,Q对象 查询 在管理器上调用过滤器方法会返回查询 查询经过过滤器筛选后返回新查询,因此可以写成链式过滤 惰性执行:创建查询不会带来任何数据库访问...,直到调用数据时,才会访问数据库 何时对查询求值:迭代,序列化,与if合用 返回查询方法,称为过滤器 all() filter() exclude() order_by() values(...,[0:1].get()引发DoesNotExist异常 查询缓存 每个查询都包含一个缓存来最小化对数据库访问 在新建查询集中,缓存为空,首次对查询求值时,会发生数据库查询django会将查询结果存在查询缓存中...()、exclude()、get()参数 语法:属性名称__比较运算符=值 表示两个下划线,左侧是属性名称,右侧是比较类型 对于,使用“属性名_id”表示原始值 转义:like语句中使用了%

2.3K20

django 1.8 官方文档翻译: 2-5-4 聚合 (初稿)

第一种方法是从整个查询生成统计值。比如,你想要计算所有在售书平均价钱。Django查询语法提供了一种方式描述所有图书集合。...查询参考中列出了聚合函数列表。 aggregate()是QuerySet 一个终止子句,意思是说,它返回一个包含一些键值对字典。名称是聚合值标识符,值是计算出来聚合值。...例如,我们可以查询所有出版商,并注上它们一共出了多少本书(注意我们如何用 ‘book’指定Publisher -> Book 反转关系): >>> from django.db.models import...) 这个查询首先生成一个注解结果,然后再生成一个作用于注解过滤器。...但是第一个查询注解包含其该出版商发行所有图书总数;而第二个查询注解只包含出版过好书出版商所发行图书总数。 在第一个查询中,注解在过滤器之前,所以过滤器对注解没有影响。

1.6K30

django 1.8 官方文档翻译: 2-6-4 数据库访问优化

这篇文档剩下部分,着重于讲解如何以不做无用功方式使用Django。这篇文档也没有强调用在开销大操作其它优化技巧,像general purpose caching。...理解查询 理解查询(QuerySets) 是通过简单代码获取较好性能至关重要一步。特别是: 理解查询计算 要避免性能问题,理解以下几点非常重要: QuerySets是延迟。...在数据库中而不是Python中做数据库工作 比如: 在最基础层面上,使用过滤器和反向过滤器对数据库进行过滤。 使用F 表达式在相同模型中基于其他字段进行过滤。 使用数据库中注解和聚合。...直接使用值 如果你仅仅需要当中一个值,要使用对象你已经取得值,而不是获取整个关联对象再得到它主键。...如果一个模型具有默认顺序(Meta.ordering),并且你并不需要它,通过在查询无参调用order_by() 来移除它。 向你数据库添加索引可能有助于提升排序性能。

1.1K30

Django】聚合在Django详细解析以及运用在企业级项目里方法

本主题指南介绍如何使用Django查询生成和返回聚合值。...例如,想计算所有在售图书平均价格。Django查询语法提供了一种描述所有藏书方法。 传递给聚合()参数描述了要计算聚合值。在此示例中,将计算Book模型价格字段平均值。...它不仅用于,还用于多对多关系。...过滤器优先于注释,因此过滤器限制了计算注释时要考虑对象。 第一个查询请求具有至少一本得分大于3平均得分。第二个查询仅请求得分超过3作者书平均分数。...很难直观地理解ORM如何将复杂查询转换为SQL查询。因此,如果有疑问,请使用str(queryset.query)`检查SQL并编写大量测试。

2K40

Django相关知识点回顾

{% empty %} # 遍历为空时逻辑 {% endfor %} 13.2.3模板过滤器 a) Jinja2模板过滤器使用 {{ 模板变量|过滤器(参数...)}} b) Django中模板过滤使用...class Meta: db_table = '' 定义属性: # 表中外字段名格式: hbook = models.ForeignKey('BookInfo...QuerySet(查询) exclude 查询条件 返回不满足条件所有数据 QuerySet(查询) order_by 排序字段 对查询结果进行排序 QuerySet(查询) aggregate...() # 由多查1 多对象.属性 例:hero.hbook 2.通过模型类进行关联查询 # 查图书(一) 一类.objects.get|filter(多类名__字段__条件=值) 例:books =...查询结果缓存 使用同一个查询时,只有在第一次使用查询时会进行数据库查询操作,然后Django框架就会把查询结果存起来,下一次再使用这个查询时,使用Django之前存储结果。

10K51

django_2

要求 修改数据库 Django shell 数据级联(一对多) 元信息 定义字段 模型过滤 创建对象4种方式 查询 过滤器 获取单个对象 字段查询 时间 聚合函数 跨关系查询 F对象 Q对象...Django有两种过滤器用于筛选记录: filter:返回符合筛选条件数据 exclude :返回不符合筛选条件数据 链式调用: 多个filter和exclude可以连接在一起查询 Person.objects.filter...概念:查询表示从数据库获取对象集合,查询可以有多个过滤器。...过滤器:过滤器就是一个函数,基于所给参数限制查询集结果,返回查询方法称为过滤器。 查询经过过滤器筛选后返回新查询,所以可以写成链式调用。.../缓存 查询缓存:每个查询都包含一个缓存,来最小化对数据库访问 在新建查询集中,缓存首次为空,第一次对查询求值,会发生数据缓存,django会将查询出来数据做 一个缓存,并返回查询结果

3.6K30

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

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

1.9K10

重点内容回顾-DRF

重点内容回顾-DRF 1. on_delete on_delete是定义模型类中外一个选项。 on_delete选项指明是主表删除数据时候,对于引用表数据如何处理。...b.PROTECT保护,通过抛出一个异常ProtectedError异常,来阻止删除主表中被引用数据。...2. related_name related_name是在定义模型类时,一个选项。它功能下面慢慢给大家分析一下。...数据库查询 属性: queryset(指定视图所使用查询) 方法: get_queryset返回视图所使用查询 get_object从视图所使用查询集中查询指定对象,默认根据pk进行查询。...过滤:需要先安装django-filter并进行注册设置,再在视图中通过 filter_fields设置过滤字段。

2.4K20

Django项目知识点(四)

,不拿author字段 app.object用法 filter() 过滤查询对象。...dates() 根据日期获取查询 datetimes() 根据时间获取查询 none() 创建空查询 all() 获取所有的对象 union() 并 intersection...aggregate和annotate方法属于高级查询方法,主要用于组合查询,是Django高手们必需要熟练掌握。...这样就可以引用模型字段值并使用它们执行数据库操作,而无需实际将它们从数据库中拉出到Python内存中 说白了就是我从数据库拿东西,但是有些需要字段没有,要通过绑定appmodel拿。...但是名称又是app__字段来命名,这样我要改名称,而且拿第一次model,放在python内存中,再拿通过绑定另一个model,又要执行第一次步骤,那个效率就不行了,干嘛我不一起拿,所以会用annotate

1.5K30

django模型

每个模型对 应数据库中唯一一张表 如何编写模型 模型:每个模型都用一个类表示,该类继承自django.db.models.Model。...过滤器基于所给参数限制查询结果。 从SQL 角度,查询和SELECT 语句等 价,过滤器是像WHERE 和LIMIT 一样限制子句。 你可以从模型管理器那里取得查询。...但在通常情况下,你往往想要获取 是完整数据一个子集。 要创建这样一个子集,你需要在原始查询增加一些过滤条件。...最后结果仍然是一个查询,它包含标题以”What“开 头、发布日期在2005年1月30日至当天之间所有记录 过滤查询是独立 每次你筛选一个查询,得到都是全新另一个查询,它和之前查询之间没有任何绑...你可以将过滤器保持一整 天,直到查询 需要求值时,Django 才会真正运行这个查询

3.1K20

Django 学习笔记之模型高级用法(

2.1 ForeignKey 1) on_delete 在 Django 2.0 中,设置时需要添加一个 on_delete选项。本身涉及到两个表数据,况且在数据库中是有约束行为。...SET_DEFAULT: 置默认值,删除时候,字段设置为默认值,所以定义时候注意加上一个默认值。 SET(): 自定义对应实体值。...2)limit_choices_to 该参数用于限制所能关联对象,只能用于 Django ModelForm(Django表单模块)和 admin 后台,对其它场合无限制功能。...4) related_name 用于关联对象反向引用模型名称。主要用于反向查询,即源模型实例通过管理器返回第一个模型所有实例。...(headline__contains='天龙八部') >>>b.novels.count() 5)related_query_name 反向查询关系查询名称。

2K30

Django之ForeignKey和ManyToManyField多表查询

只有在db_constraint=True时Django model才会在数据库建立约束, 在该值为False时不建立约束. 默认db_constraint=True....如Entry.blog作为Blog,默认情况下Blog.entry_set是包含所有参照BlogEntry示例查询,可以使用查询API取出相应实例。...在这种情况下,必须使用through_fields 明确指定Django 应该使用哪些 through_fields 接收一个二元组('field1', 'field2'),其中field1 为指向定义...ManyToManyField 字段模型键名称(本例中为group),field2 为指向目标模型名称(本例中为person)....反向查询: >>>a = Person.objects.get(id=1) >>>a.group_set.all() 同样related_name可以设置反向查询名称。

1.7K10

Mysql基础

该节描述了这些类型如何工作以及如何查询中使用这些类型。 ? CHAR和VARCHAR类型类似,但它们保存和检索方式不同。它们最大长度和是否尾部空格被保留等方面也不同。...语句 --约束对子表含义: 如果在父表中找不到候选,则不允许在子表上进行insert/update --约束对父表含义: 在父表上进行update/delete以更新或删除在子表中有一条或多条对...-- 应匹配行候选时,父表行为取决于:在定义子表时指定 -- on update/on delete子句.../delete记录时,将子表匹配记录列设为null -- 要注意子表列不能为not null FOREIGN KEY (charger_id) REFERENCES ClassCharger...:在内连接基础增加左边有右边没有的和右边有左边没有的结果 -- mysql不支持全连接 full JOIN -- mysql可以使用此种方式间接实现全连接 select

4.2K20

Web | Django 与数据库交互,你需要知道 9 个技巧

查询结果变为具名元组(QuerySet results as namedtuples) 我是一个 namedtuples 粉丝,同时也是 Django 2.0 ORM 粉丝。...在大多数 Django 应用程序中,大部分时间都花在等待数据库查询上了。所以,在 SQL 查询设置超时是一个很好的开始。...因为这样它只会影响工作进程,不会影响进程分析查询,cron 任务等。 希望您使用是持久数据库连接,这样每次请求都不会再有连接开销。...索引(FK Indexes) 创建模型时,Django 会在所有创建一个 B-Tree 索引,它开销可能相当大,而且有时候并不很必要。...顾名思义,BRIN 索引会在表格中一系列相邻块创建一个小型索引。该索引非常小,只能说明某个值是否在范围内,或者是否在索引块范围内。 我们来做一个 BRIN 索引如何帮助我们简单例子。

2.8K40

07.Django学习之model进阶

你可以将过滤器保持一整天,直到查询 需要求值时,Django 才会真正运行这个查询。...首次对查询进行求值 —— 同时发生数据库查询 ——Django 将保存查询结果到查询(非简单查询查询结果,简单查询往下看。)...select_related 返回一个QuerySet,当执行它查询时它沿着关系查询关联对象数据。它会生成一个复杂查询并引起性能损耗,但是在以后使用关系时将不需要数据库查询。...简单说,在对QuerySet使用select_related()函数后,Django会获取相应对应对象,从而在之后需要时候不必再查询数据库了。...nid"); 多查询 这是针对category查询,如果是另外一个呢?

2K30
领券