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

Django Queryset:根据某一列(Foreignkey)过滤查询集,按年份过滤

Django Queryset是Django框架中用于数据库查询的API。它允许开发人员使用Python代码来构建和执行数据库查询,以获取所需的数据。

根据某一列(Foreignkey)过滤查询集,可以使用Django Queryset的filter()方法和双下划线(__)语法来实现。假设我们有两个模型,一个是Author,另一个是Book,并且Book模型有一个外键字段author指向Author模型。我们想要根据Author模型中的某个字段进行过滤,可以使用如下代码:

代码语言:txt
复制
from myapp.models import Book

# 根据作者名字为"John"过滤查询集
books = Book.objects.filter(author__name="John")

上述代码中,filter()方法用于过滤查询集,author__name表示通过外键字段authorname属性进行过滤,"John"是过滤条件。

按年份过滤查询可以使用Django Queryset的__year属性。假设我们有一个PublicationDate字段表示出版日期,我们想要获取2019年的所有书籍,可以使用如下代码:

代码语言:txt
复制
from myapp.models import Book

# 获取2019年的所有书籍
books = Book.objects.filter(publication_date__year=2019)

上述代码中,publication_date__year表示通过publication_date字段的年份进行过滤,2019是过滤条件。

Django Queryset的优势在于它提供了简洁而强大的API,使得数据库查询变得更加容易和高效。它支持链式调用多个过滤条件,可以进行复杂的查询操作。此外,Django还提供了许多其他功能,如排序、聚合、分页等,以满足不同的查询需求。

对于以上提到的Django Queryset的相关内容,腾讯云提供了云数据库 TencentDB for PostgreSQL 和云服务器 CVM 等产品,可以用于支持Django应用的数据库存储和服务器部署。您可以访问以下链接了解更多信息:

请注意,以上链接仅供参考,具体选择适合的产品需要根据实际需求进行评估。

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

相关·内容

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

QuerySet表示你数据库中取出来的一个对象的集合。它可以含有零个、一个或者多个过滤器,过滤根据所给的参数限制查询结果的范围。...举个例子,要获取年份为2006的所有文章的结果,可以这样使用filter()方法: Entry.objects.filter(pub_date__year=2006) 在默认的管理器类中,它相当于:...你可以一直添加过滤器,在这个过程中,Django 不会执行任何数据库查询,除非 QuerySet 被执行....一般来说,对 QuerySet 切片会返回新的 QuerySet – 这个过程中不会对运行查询。不过也有例外,如果你在切片时使用了 “step” 参数,查询就会被求值,就在数据库中运行查询。...QuerySet 第一次运行时,会执行数据库查询,接下来 Django 就在 QuerySet 的缓存中保存查询的结果,并根据请求返回这些结果(比如,后面再次调用这个 QuerySet 的时候)。

4.3K20

【愚公系列】2022年04月 Python教学课程 74-DRF框架之过滤

4.3 嵌套查找 4.4 参数说明 4.5 自定义过滤器 一、普通过滤 REST 框架的通用列表视图的默认行为是返回模型管理器的整个查询。...GenericAPIView.get_queryset() 重写此方法允许您以多种不同的方式自定义视图返回的查询。...P.+)/$', PurchaseList.as_view()), 然后,您可以编写一个视图,返回 URL 的用户名部分筛选查询: class PurchaseList(generics.ListAPIView...筛选初始查询的最后一个示例是根据 url 中的查询参数确定初始查询。...= queryset.filter(purchaser__username=username) return queryset 二、通用过滤 除了能够重写默认查询之外,REST 框架还包括对通用筛选后端的支持

2.5K30

django_2

要求 修改数据库 Django shell 数据级联(一对多) 元信息 定义字段 模型过滤 创建对象4种方式 查询 过滤器 获取单个对象 字段查询 时间 聚合函数 跨关系查询 F对象 Q对象...根据属性的类型确定以下信息 ·当前选择的数据库支持字段的类型 ·渲染管理表单时使用的默认html控件 ·在管理站点最低限度的验证 ·django会为表增加自动增长的主键,每个模型只能有一个主键...概念:查询表示从数据库获取的对象集合,查询可以有多个过滤器。...过滤器:过滤器就是一个函数,基于所给的参数限制查询集结果,返回查询的方法称为过滤器。 查询经过过滤器筛选后返回新的查询,所以可以写成链式调用。...'> 得到的是查询集合,queryset没有save属性,获取所有数据 概述 ·django根据属性的类型确定以下信息 ·当前选择的数据库支持字段的类型 ·渲染管理表单时使用的默认

3.6K30

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

第一种方法是从整个查询生成统计值。比如,你想要计算所有在售书的平均价钱。Django查询语法提供了一种方式描述所有图书的集合。...查询参考中列出了聚合函数的列表。 aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。键的名称是聚合值的标识符,值是计算出来的聚合值。...annotate()子句的返回结果是一个查询 (QuerySet);这个 QuerySet可以用任何QuerySet方法进行修改,包括 filter(), order_by(), 甚至是再次应用annotate...例如,根据一本图书作者数量的多少对查询 QuerySet进行排序: >>> Book.objects.annotate(num_authors=Count('authors')).order_by('...但是,如果 annotate() 子句在 values()子句之前,就会根据整个查询生成注解。在这种情况下,values() 子句只能限制输出的字段范围。

1.6K30

Django学习笔记之Django ORM相关操作

[]> 示例4:根据一本图书作者数量的多少对查询 QuerySet进行排序 >>> models.Book.objects.annotate(author_num=Count...Q查询 F查询 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较。...所有提供给查询函数的参数(关键字参数或Q 对象)都将"AND”在一起。但是,如果出现Q 对象,它必须位于所有关键字参数的前面。 例如:查询出版年份是2017或2018,书名中带物语的所有书。...values_list(self, *fields, **kwargs): # 获取每行数据为元祖 def dates(self, field_name, kind, order='ASC'): # 根据时间进行某一部分进行去重查找并截取指定内容...models.DatePlus.objects.dates('ctime','day','DESC') def datetimes(self, field_name, kind, order='ASC', tzinfo=None): # 根据时间进行某一部分进行去重查找并截取指定内容

3.5K40

python 终级篇 django --

此时可以使用distinct(),注意只有在PostgreSQL中支持字段去重。) count(): 返回数据库中匹配查询(QuerySet)的对象数量。...[]> 示例4:根据一本图书作者数量的多少对查询 QuerySet进行排序 >>> models.Book.objects.annotate(author_num=Count...Q查询                                F查询 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较。...所有提供给查询函数的参数(关键字参数或Q 对象)都将"AND”在一起。但是,如果出现Q 对象,它必须位于所有关键字参数的前面。 例如:查询出版年份是2017或2018,书名中带物语的所有书。...values_list(self, *fields, **kwargs): # 获取每行数据为元祖 def dates(self, field_name, kind, order='ASC'): # 根据时间进行某一部分进行去重查找并截取指定内容

2.8K20

ORM常用操作

[]> 示例4:根据一本图书作者数量的多少对查询 QuerySet进行排序 >>> models.Book.objects.annotate(author_num=Count.../Q查询 F查询 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较。...所有提供给查询函数的参数(关键字参数或Q 对象)都将”AND”在一起。但是,如果出现Q 对象,它必须位于所有关键字参数的前面。 例如:查询出版年份是2017或2018,书名中带物语的所有书。...values_list(self, *fields, **kwargs): # 获取每行数据为元祖 def dates(self, field_name, kind, order='ASC'): # 根据时间进行某一部分进行去重查找并截取指定内容...models.DatePlus.objects.dates('ctime','day','DESC') def datetimes(self, field_name, kind, order='ASC', tzinfo=None): # 根据时间进行某一部分进行去重查找并截取指定内容

1.9K10

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

(average_rating=Avg('book__rating')) 聚合和其它查询操作Aggregations and other QuerySet clauses filter() and...但是第一个查询的注解包含其该出版商发行的所有图书的总数;而第二个查询的注解只包含出版过好书的出版商的所发行的好书(评分大于3分)总数。在第一个查询中,注解在过滤器之前,所以过滤器对注解没有影响。...在第二个查询中,过滤器在注解之前,所以,在计算注解值时,过滤器就限制了参与运算的对象的范围 order_by() 可以根据聚合值进行排序 >>> Book.objects.annotate(num_authors...=Count('authors')).order_by('num_authors') values() 通常,注解annotate是添加到每一个对象上的,一个执行了注解操作的查询 QuerySet 所返回的结果中...就不是在原始的 QuerySet 返回结果中对每个对象中添加注解,而是根据定义在 values() 从句中的字段组合对先结果进行唯一的分组,再根据每个分组算出注解值,这个注解值是根据分组中所有的成员计算而得的

1K20

Django小技巧03: 优化数据库查询

需要注意的是, Django QuerySets 是惰性查询的, 如果使用得当非常适用。...当我们调用这个 queryset(unpaid_invoices) 才会真正的执行到数据库查询。通常情况下, 当我们去遍历这个 Queryset 就会发生这种情况, 即 queryset 开始执行。...只会执行一个数据库查询。 但是当您的模型有关系数据字段时, 比如ForeignKey, OneToOneField 或 ManyToManyField. 上面的查询就会发生变化了。...现在和上面的模板中一样去迭代这个 queyset, 但这次显示了供应商名称,Django ORM将对unpaid_invoices数据每一条记录执行一次额外的查询....推荐一个可以跟踪数据库查询的调试工具Django Debug Toolbar 阅读更多关于Django QuerySet API的文档. Django Documentation

95120

python测试开发django-169.过滤django-filter 入门使用

前言 在管理后台查询的时候,经常有需要查询包含某个内容,按时间段查询,或者商品价格大于多少,小于多少各种查询条件。 django-filter 过滤器专门解决这种查询的问题。...python:3.5、3.6、3.7、3.8 django:2.2、3.0、3.1 DRF : 3.10+ 简单入门 Django-filter 提供了一种基于用户提供的参数过滤查询的简单方法。...,默认查询全部,可以根据name/price/release_date查询 该form属性包含一个普通的 Django 表单,当我们遍历 时,FilterSet.qs我们会得到结果查询集中的对象。...FilterSet.qs查询结果 FilterSet.qs 查询的结果是 QuerySet 集合,可以转成 json 格式 from django.forms.models import model_to_dict...要按request对象过滤查询,只需覆盖该 FilterSet.qs属性。

2.2K20

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

聚合 Django数据库抽象API描述了使用Django查询来添加、删除、查询和修改单个对象的方法。然而,有时需要根据一组对象聚合您想要获得的值。...第一种方法是从整个QuerySet生成摘要值。例如,想计算所有在售图书的平均价格。Django查询语法提供了一种描述所有藏书的方法。 传递给聚合()的参数描述了要计算的聚合值。...在第一个查询中,注释优先于过滤器,因此过滤器不会影响注释。Distinct=True用于避免查询错误。 第二个查询查询每个出版商得分超过3的图书数量。...过滤器优先于注释,因此过滤器限制了计算注释时要考虑的对象。 第一个查询请求具有至少一本得分大于3的书的平均得分。第二个查询仅请求得分超过3的作者书的平均分数。...很难直观地理解ORM如何将复杂的查询转换为SQL查询。因此,如果有疑问,请使用str(queryset.query)`检查SQL并编写大量测试。

2K40

Django】 开发:数据库操作和后台管理

xxx 返回值: QuerySet 返回查询结果容器,容器内存字典,每个字典代表一条数据, 格式为: {‘ 1’: 值 1, ‘ 2’: 值 2} 示例: from bookstore.models...(元组表示) 方法:values_list (‘ 1’,‘ 2’) 用法:MyModel.objects.values_list (…) 作用: 返回元组形式的查询结果 返回值: QuerySet...方法:order_by 用法:MyModel.objects.order_by (’- ’,‘’) 作用: 与 all () 方法不同,它会用 SQL 语句的 ORDER BY 子句对查询结果进行根据某个字段选择性的进行排序...= Author.objects.get(id=1) auth.delete() except: print(删除失败) 删除查询结果 步骤 查找查询结果集中满足条件的全部 QuerySet...方法分组聚合得到分组结果 QuerySet.annotate (名 = 聚合函数 (‘’)) 返回 QuerySet 结果,内部存储结果的字典 如: pub_count_set = pub_set.annotate

4K40

Django DjangoFilterBackend django-filter

djangorestframework==3.8.2 django-filter==2.0.0 #2 需求 获取某些数据时,需要按某些字段过滤 过滤时,有些的字段是 “跨表” 的字段,该如何处理 过滤时...models.CharField(verbose_name="老师姓名",max_length=16) class Student(models.Model): """学生表""" tea = models.ForeignKey...#5 跨表过滤 需求:根据老师的名字过滤 class getUserListFilter(django_filters.rest_framework.FilterSet): teaname =...', label='薪资',) 函数 def salary_filter(self, queryset, name, value): return queryset.filter(Q(...(xxx),那么返回的结果是所有过滤的交集,如果每个自定义函数都返回自己过滤的数据(例如,models.Student.objects.filter().filter()),那么过滤的结果是所有符合条件的并

1.5K20
领券