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

Django查询集(根据同一模型中的其他字段进行过滤)

Django查询集是Django框架中用于数据库查询的对象集合。它允许开发人员使用简洁的Python代码来执行复杂的数据库查询操作。在查询集中,可以使用各种方法和过滤器来过滤和操作数据。

根据同一模型中的其他字段进行过滤是指在查询集中根据模型中的其他字段的值来筛选数据。这可以通过使用双下划线(__)来实现。

以下是一些常用的查询集方法和过滤器,以及它们的作用和用法:

  1. filter(**kwargs): 根据指定的条件筛选数据。可以使用多个条件,多个条件之间是AND关系。 示例:Model.objects.filter(field1=value1, field2=value2)
  2. exclude(**kwargs): 排除符合指定条件的数据。 示例:Model.objects.exclude(field=value)
  3. get(**kwargs): 获取符合指定条件的单个对象。如果符合条件的对象不存在或存在多个,则会抛出异常。 示例:Model.objects.get(field=value)
  4. order_by(*fields): 根据指定字段对结果进行排序,默认是升序。可以使用负号(-)表示降序。 示例:Model.objects.order_by('field1', '-field2')
  5. values(*fields): 返回指定字段的值,以字典的形式表示。 示例:Model.objects.values('field1', 'field2')
  6. annotate(*args, **kwargs): 对查询结果进行注解,可以添加聚合函数、计数等操作。 示例:Model.objects.annotate(total=Count('field'))
  7. distinct(): 去除查询结果中的重复项。 示例:Model.objects.distinct()
  8. 使用双下划线进行字段间的关联和过滤:
    • exact:精确匹配,大小写敏感。 示例:Model.objects.filter(field__exact=value)
    • iexact:不区分大小写的精确匹配。 示例:Model.objects.filter(field__iexact=value)
    • contains:包含指定值的数据。 示例:Model.objects.filter(field__contains=value)
    • icontains:不区分大小写的包含指定值的数据。 示例:Model.objects.filter(field__icontains=value)
    • in:在指定列表中的数据。 示例:Model.objects.filter(field__in=value1, value2)
    • gt:大于指定值的数据。 示例:Model.objects.filter(field__gt=value)
    • lt:小于指定值的数据。 示例:Model.objects.filter(field__lt=value)
    • gte:大于等于指定值的数据。 示例:Model.objects.filter(field__gte=value)
    • lte:小于等于指定值的数据。 示例:Model.objects.filter(field__lte=value)
    • range:在指定范围内的数据。 示例:Model.objects.filter(field__range=(value1, value2))
    • year/month/day:根据日期字段进行年/月/日的过滤。 示例:Model.objects.filter(date_field__year=2022)

Django查询集的优势在于它提供了简洁而强大的API,使得数据库查询变得更加容易和高效。它还具有良好的可扩展性和灵活性,可以与其他Django组件(如模板引擎)无缝集成。

对于Django查询集的更详细了解和使用示例,可以参考腾讯云的Django开发文档:

https://cloud.tencent.com/document/product/1103/36740

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

相关·内容

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

,在这个例子,是Book 模型price字段平均值。...作用于普通模型字段任何 filter()(或 exclude()) 都会对聚合涉及对象进行限制。 使用annotate() 子句时,过滤器有限制注解对象作用。...像使用其他模型字段一样,注解也可以在filter()和exclude() 子句中使用别名。...不是在原始 QuerySet返回结果对每个对象添加注解,而是根据定义在values() 子句中字段组合对先结果进行唯一分组,再根据每个分组算出注解值, 这个注解值是根据分组中所有的成员计算而得...但是,如果 annotate() 子句在 values()子句之前,就会根据整个查询生成注解。在这种情况下,values() 子句只能限制输出字段范围。

1.6K30

Django篇(二)

常见模型字段属性 模型属性命名: 1、不能是python保留关键字 2、不允许出现联系下划线 字段类型 第一篇文章我们仅仅了解了几个。 接下来我们重新了解一下有什么其他模型。...更多模型字段,请参考Django官方文档。写明明白白。 查询 我们在Django通过操作模型类去做增删改查,sql语句那么多,我们同样可以进行增删改查。 其中最复杂也就是查询了。...查询函数 我们在Django通过:模型类.objects属性调用以下函数来进行查询 get: 返回表满足条件一条数据,有且只能有一条,查询出多条会报异常。 查询不到数据也会报异常。...2、缓存 当我们使用同一查询时候,只有第一次是执行到数据库,然后把结果储存起来,当我们再次使用这个查询时候,就会调用我们缓存数据。...过滤查询实例 如果我们在models.py创建一个模型: # 创建stuinfo表 class stuinfo(model.Model): # name 字符串类型 最大长度为20

1.3K20

Django模型

4.查询 查询表示从数据库获取对象集合,在管理器上调用某些过滤器方法会返回查询查询可以含有零个、一个或多个过滤器。...过滤器基于所给参数限制查询结果,从Sql角度,查询和select语句等价,过滤器像where和limit子句。 返回查询过滤器如下: all():返回所有数据。...缓存:使用同一查询,第一次使用时会发生数据库查询,然后把结果缓存下来,再次使用这个查询时会使用缓存数据。 查询缓存 每个查询都包含一个缓存来最小化对数据库访问。...在新建查询集中,缓存为空,首次对查询求值时,会发生数据库查询django会将查询结果存在查询缓存,并返回请求结果,接下来对查询求值将重用缓存结果。...限制查询 可以对查询进行取下标或切片操作,等同于sqllimit和offset子句。   注意:不支持负数索引。 对查询进行切片后返回一个新查询,不会立即执行查询

6.1K21

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

python对象,django使用一种直观方式:一个模型类代表数据库一个表,一个模型实例代表数据库表一条特定记录。...它可以含有零个、一个或者多个过滤器,过滤根据所给参数限制查询结果范围。在sql角度,QuerySet和SELECT命令等价,过滤器是像WHERE和LIMIT一样限制子句。...其他查询方法 大多数情况使用 all(), filter() 和 exclude() 就足够了。...针对这两种情况,Django 用一种很方便方式来使用 filter() 和 exclude()。对于包含在同一个 filter() 筛选条件,查询要同时满足所有筛选条件。...如果我们要对两个字段值做比较,那该怎么做呢? Django 提供 F() 来做这样比较。F() 实例可以在查询引用字段,来比较同一个 model 实例两个不同字段值。

4.3K20

Python全栈开发之Django基础

如果在一台机器上,想开发不同项目,这些项目依赖同一个包版本不同,其他项目就无法正常运行了,所有我们要用到虚拟环境,虚拟环境就是对真实Python环境复制,通过建立多个虚拟环境,在不同虚拟环境开发项目就实现了项目之间间隔...() 查询 查询表示从数据库查询对象集合 返回查询过滤器 all():返回所有数据 filter(): 返回满足条件数据 exclude(): 返回不满足条件数据 order_by()...): 返回当前查询结果总条数 aggregate(): 聚合,返回一个字典 判断一个查询集中是否有数据 两个特性 惰性 创建查询不会访问数据库,直到调用数据时,才会访问数据库 缓存 使用同一个结果...,第一次使用会触发查询数据库,然后将结果缓存下载,再次使用直接调用缓存 限制结果 可以对结果进行切片操作,等同于数据库分页操作,但是不支持负数 list = BookInfo.objects.all...No.6 后台 内容发布部分由网站管理员负责查看、添加、修改、删除数据,开发这些重复功能是一件单调乏味、缺乏创造力工作,为此,Django能够根据定义模型类自动地生成管理模块 页选项 页大小

3.7K20

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

python:3.5、3.6、3.7、3.8 django:2.2、3.0、3.1 DRF : 3.10+ 简单入门 Django-filter 提供了一种基于用户提供参数过滤查询简单方法。...,希望让我们用户根据名称、价格或发布日期进行过滤 exact 精准查找,等价于filter(name=xx),对应sql语句 where name='xx'; iexact 使用 like 进行查找,...,默认查询全部,可以根据name/price/release_date查询 该form属性包含一个普通 Django 表单,当我们遍历 时,FilterSet.qs我们会得到结果查询集中对象。...您可以使用 Django __语法遍历“关系路径”来过滤相关模型字段。 例如:manufacturer__name。 lookup_expr: 过滤时使用字段查找。...类fields序列项目Meta可能包括“关系路径”,使用 Django __语法过滤相关模型字段: class ProductFilter(django_filters.FilterSet)

2.2K20

django_2

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

3.6K30

Django 模型查询2.3

简介 查询表示从数据库获取对象集合 查询可以含有零个、一个或多个过滤过滤器基于所给参数限制查询结果 从Sql角度,查询和select语句等价,过滤器像where和limit子句 接下来主要讨论如下知识点...查询 字段查询:比较运算符,F对象,Q对象 查询 在管理器上调用过滤器方法会返回查询 查询经过过滤器筛选后返回新查询,因此可以写成链式过滤 惰性执行:创建查询不会带来任何数据库访问...,[0:1].get()引发DoesNotExist异常 查询缓存 每个查询都包含一个缓存来最小化对数据库访问 在新建查询集中,缓存为空,首次对查询求值时,会发生数据库查询django会将查询结果存在查询缓存...')) django支持对F()对象使用算数运算 list.filter(bread__gte=F('bcommet') * 2) F()对象还可以写作“模型类__列名”进行关联查询 list.filter...') + timedelta(days=1)) Q对象 过滤方法关键字参数查询,会合并为And进行 需要进行or查询,使用Q()对象 Q对象(django.db.models.Q)用于封装一组关键字参数

2.3K20

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

文章目录 一、普通过滤 1.针对当前用户进行筛选 2.针对网址进行筛选 3.针对查询参数进行筛选 二、通用过滤 1.全局设置 2.视图设置 3.简单过滤 4.搜索器过滤 4.1 多字段查找 4.2 多字段查找...4.3 嵌套查找 4.4 参数说明 4.5 自定义过滤器 一、普通过滤 REST 框架通用列表视图默认行为是返回模型管理器整个查询。...一种筛选方式可能涉及根据 URL 某些部分限制查询。...筛选初始查询最后一个示例是根据 url 查询参数确定初始查询。...username', 'email', 'profile__profession'] 4.3 嵌套查找 对于 JSONField 和 HStoreField 字段,您可以使用相同双下划线表示法根据数据结构嵌套值进行查找

2.5K30

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

例如,想计算所有在售图书平均价格。Django查询语法提供了一种描述所有藏书方法。 传递给聚合()参数描述了要计算聚合值。在此示例,将计算Book模型上价格字段平均值。...annotate()子句输出是QuerySet;此QuerySet由其他QuerySet操作修改,包括filter()',order_by(),您甚至可以进行其他调用来注释()。...但是,有时要聚合值属于所查询模型关联模型。 在聚合函数中指定聚合字段时,Django允许您在筛选相关字段时使用相同双下划线符号。Django将处理需要检索和聚合相关值任何表连接。...应用于公共模型字段任何过滤器()(或exclude())都将具有约束被认为是聚合对象效果。 当使用annotate()子句时,过滤器具有约束注释对象计算效果。...在第一个查询,注释优先于过滤器,因此过滤器不会影响注释。Distinct=True用于避免查询错误。 第二个查询查询每个出版商得分超过3图书数量。

2K40

重点内容回顾-DRF

数据库查询 属性: queryset(指定视图所使用查询) 方法: get_queryset返回视图所使用查询 get_object从视图所使用查询集中查询指定对象,默认根据pk进行查询。...其他功能 过滤、分类 通常GenericAPIView配合Mixin扩展类进行使用 5.5.2.3Mixin扩展类 DRF框架提供了5个扩展类,封装了通用增删改查流程。...使用场景: 根据不同操作返回不同序列化器类和不同查询,重写 get_serializer_class和 get_queryset方法。...返回latest操作使用查询 else: # 返回其他操作所使用查询 5.6.6路由Router 作用 配合视图集进行使用,动态生成视图集中处理函数url配置项。...过滤:需要先安装django-filter并进行注册设置,再在视图中通过 filter_fields设置过滤字段

2.4K20

django模型

也可以使用一条语句创建并保存一个对象,使用create()方法 查询对象 通过模型管理器构造一个查询,来从你数据库获取对象。 查询(queryset)表示从数据库取出来对象集合。...过滤器基于所给参数限制查询结果。 从SQL 角度,查询和SELECT 语句等 价,过滤器是像WHERE 和LIMIT 一样限制子句。 你可以从模型管理器那里取得查询。...查询参数(上面函数定义**kwargs)需要满足特定格式,下面字段查询一节中会提 到 使用过滤器获取特定对象示例 要获取年份为2006所有文章查询,可以使用filter()方法: Entry.objects.filter...你可以将过滤器保持一整 天,直到查询 需要求值时,Django 才会真正运行这个查询。...如果您在某些情 况下使用查询结果,当您最初获取数据时不知道是否需要这些特定字段,可以告诉 Django不要从数据库检索它们。

3.1K20

Django相关知识点回顾

|过滤器(参数...)}} b) Django模板过滤使用 {{ 模板变量|过滤器:参数 }} 注意:Django过滤器 :之后只能接收一个参数 13.3步骤 13.3.1数据库连接配置 flask...__tablename__ = '' django定义模型类: class 模型类名(models.Model): # 字段名 = models.字段类型(选项参数) ......all 无 查询模型类对应表格所有数据 QuerySet(查询) get 查询条件 查询满足条件一条且只能有一条数据 模型类对象,查不到会报错DoesNotExist filter 查询条件 返回满足条件所有数据...QuerySet(查询) exclude 查询条件 返回不满足条件所有数据 QuerySet(查询) order_by 排序字段查询结果进行排序 QuerySet(查询) aggregate...查询结果缓存 使用同一查询时,只有在第一次使用查询时会进行数据库查询操作,然后Django框架就会把查询结果存起来,下一次再使用这个查询时,使用Django之前存储结果。

10K51

Django 聚合与查询API实现侧边栏

本文从Django官方文档总结而来,将聚合主要用法和查询常见方法做一归纳。 聚合 1....以上提及方法、字段查找和聚合函数将在查询API中介绍。那么,我们先介绍聚合。...# 编写第一本书作者数目为2, authors为Book模型字段名,count为字段查询,所以用双下划线连接 2 # Interrogate the second object in the...annotate()子句返回结果是一个查询 (QuerySet);这个 QuerySet可以用任何QuerySet方法进行修改,包括 filter(), order_by()。...,但只有作者名称和average_rating 注解会返回在输出结果 4.查询(QuerySet)API 查询 本质上,可以创建、过滤、切片和传递查询而不用真实操作数据库。

1.4K20

提高Djang查询速度9种方法

索引优化索引是提高数据库查询性能重要手段。在Django,我们可以使用db_index属性在模型字段上创建索引。...查询延迟加载在Django查询是惰性加载,只有在需要数据时才会执行数据库查询。这意味着我们可以链式调用多个方法来对查询进行逐步优化,而不必立即执行查询。...).order\_by('field2')查询延迟加载使得我们可以根据实际需求灵活地构建查询,并避免不必要数据库查询操作。...延迟计算字段有时,我们可能需要在模型定义一些根据其他字段计算得出字段,这些字段不会被存储在数据库,而是在查询时动态计算。Django提供了@property装饰器来定义延迟计算字段。...使用F()和Q()对象进行复杂查询DjangoF()对象和Q()对象提供了一种方便方式来构建复杂查询。F()对象可以在查询引用模型字段,而Q()对象可以组合多个查询条件。

25120

django框架菜鸟教程_django框架菜鸟教程

,即假使客户端进行POST方式请求,依然可以通过request.GET获取请求查询字符串数据。...模型类.DoesNotExist 异常 all 多个结果 count 查询结果数量 过滤查询 filter 过滤多个结果 exclude 排除 get 过滤单一结果 过滤条件表达语法 属性名称...id 多对应模型类对象.关联类属性_id 关联过滤查询 由多模型类条件查询模型类数据: 关联模型类名小写__属性名__条件运算符=值 # 例句:查询图书,要求图书中英雄描述包含"八" BookInfo.objects.filter...objects.filter().delete() 查询 QuerySet 1、概念:从数据库获取对象集合 过滤器方法: all() filter() exclude() order_by() exists...():判断查询集中是否有数据,有返回Ture,无返回False 2、特性 惰性执行:创建查询时候不会调用数据库,调用数据时候访问,迭代、序列化、if合用 缓存 3、限制查询查询进行下标或切片操作

3K40

django 1.8 官方文档翻译: 2-5-1 管理器 (初稿)

你可以通过重写 Manager.get_queryset() 方法来覆盖 管理器自带 查询。get_queryset() 会根据你所需要属性返回 查询。...由于 get_queryset() 返回是一个 查询 对象,所以你仍可以对它使用 filter(), exclude()和其他 查询方法。...这是因为 Django 要能从关联对象获得数据,但这些数据有可能被默认管理器过滤掉,或是无法进行访问。...创建管理器 * django 1.7 中新增 * 对于上面的例子,同一个方法需要在查询 和 管理器上创建两份副本,作为替代,QuerySet.as_manager()可以创建一个管理器实例,它拥有自定义查询方法...并不是每个查询方法都在管理器层面上有意义。比如 QuerySet.delete(),我们有意防止它复制到管理器 。 方法按照以下规则进行复制: 公共方法默认被复制。

95520

Django MVT之M

Django MVC概述和开发流程已经讲解了DjangoMVT开发流程,本文重点对MVT模型(Model)进行重点讲解。 配置MySQL数据库 确保已经安装了操作mysql包。...字段类型 Django每个模型类都会被映射为数据表,而模型类属性则被映射为数据表字段。...使用时,需引入django.db.models包,常用字段类型如下: 字段类型 描述 AutoField 根据实际ID自动增长整数字段,通常不需要直接使用,Django会自动生成ID字段并且自动增长。...缓存: 当使用同一查询时,第一次使用时候会发生实际数据库查询,然后把结果缓存起来,之后再使用这个查询时,使用是缓存结果。...可以对一个查询进行取下标或切片操作,切片操作会产生一个新查询。与python列表不同是,下标不允许为负数。

99910
领券