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

Django-官网查询部分翻译(1.11版本文档)-QuerySet-字段查找-06

特别点 本文将翻译 django 官网的 模型层的 QuerySet 章节 文档版本:1.11 Making queries 进行查询 一旦你创建了 数据表模型类,django 会自动给你一些数据库抽象...)可以使用 Q 对象 Q对象 的使用 from django.db.models import * """ , 间隔 Q 对象,是 and 关系 ( & 也是) | 间隔 Q 对象,是 or 关系 ~...(字段查询条件,双下划线查询) 此部分参考文档: django官网 字段查找(field-lookups) 字段查找(field-lookups)对应的是 SQL 语句中的 WHERE 条件,一般放在...__week # 匹配 datetime、date 类型字段,当年的第几周(1-52/53,平闰年不同) # django 1.11 中新增的 Entry.objects.filter(pub_date...__time # 匹配 datetime、time 类型字段的 minute, django 1.11 中新增的 Entry.objects.filter(pub_date__time=datetime.time

2.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Django ORM:天使与魔鬼

    一般直接用来做 Response 没有问题,但是要知道 QuerySet 是不能被 pickle 的,如果使用到 Django Cache 之类功能,直接用 values() 当作返回会死得很惨。...有时候希望它坚持自我 很多时候我们需要限制 QuerySet 返回的字段以加快 DB 查询的速度(比如一些没索引的长字段),这时候可能的两个方法: only() & values() 。...但实际情况是,使用 values() 会改变 queryset._iterable_class ,如果后面还有更多的级联查询,会导致最后的结果为 Dict 而不是 QuerySet。...有时候我们需要使用动态字段,并且保证动态字段的值全表唯一。...动态字段我们使用 LONGTEXT 存储,格式为 JSON 。如果手动处理,需要将整个表的字段放到内存,并做唯一校验,非常麻烦且耗时。

    81440

    【愚公系列】2022年01月 Python教学课程 42-Django框架之ORM中查询详解

    _1.11/lib/python3.5/site-packages/django/db/models/manager.py", line 85, in manager_method return...getattr(self.get_queryset(), name)(*args, **kwargs) File "/home/python/.virtualenvs/py3_django_1.11...(readcount__gt=20).filter(id__lt=3) QuerySet []> 如果需要实现逻辑或or的查询,需要使用Q()对象结合|运算符,Q对象被义在...例:查询阅读量大于20,或编号小于3的图书,只能使用Q对象实现 >>> BookInfo.objects.filter(Q(readcount__gt=20)|Q(id__lt=3)) QuerySet...使用同一个查询集,第一次使用时会发生数据库的查询,然后Django会把结果缓存下来,再次使用这个查询集时会使用缓存的数据,减少了数据库的查询次数。

    1.9K40

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

    在当今根据需求而不断调整而成的应用程序中,通常不仅需要能依常规的字段,如字母顺序或创建日期,来对项目进行排序,还需要按其他某种动态数据对项目进行排序。Djngo聚合就能满足这些要求。...每个对象的总结可以用方法annotate()生成: # 建立一个annotate QuerySet >>> from django.db.models import Count >>> q = Book.objects.annotate...# 第二个对象 >>> q[1] Django Projects> >>> q[1].authors__count 1 也可以指定生成属性的名字: >>> q = Book.objects.annotate...就不是在原始的 QuerySet 返回结果中对每个对象中添加注解,而是根据定义在 values() 从句中的字段组合对先结果进行唯一的分组,再根据每个分组算出注解值,这个注解值是根据分组中所有的成员计算而得的...进行组合,返回的是每个unique name的聚合值。

    1.1K20

    Django实战-信息资讯-切片加载与搜索

    Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。...② 页面加载 django.views.decorators.http 里的装饰器可以基于请求的方法来限制对视图的访问。...-> [NewsObject,News()] 对象 values()可以将Queryset 转换成列表 # 并且将Queryset的模型对象(比如News()对象) 转换为字典 , 再转换成列表...③ 搜索 from django.db.models import Q Q 对象 (django.db.models.Q) 可以对关键字参数进行封装,从而更好地应用多个查询。...可以组合使用 &(and),|(or),~(not)操作符,当一个操作符是用于两个Q的对象,它产生一个新的Q对象。 Q对象可以与关键字参数查询一起使用,不过一定要把Q对象放在关键字参数查询的前面。

    77540

    Django之Model操作数据库详解

    filter返回的是一个QuerySet对象,filter里可以设定多个过滤条件 4、查 查询数据使用QuerySet API。...关键字参数指定的Annotation将使用关键字作为Annotation 的别名。 匿名参数的别名将基于聚合函数的名称和模型的字段生成。 只有引用单个字段的聚合表达式才可以使用匿名参数。...当查询跨越多张表的数据时,QuerySet可能得到重复的结果,这时候可以使用distinct()进行去重。...="aaa")).all() print(q1) Q对象可以组合使用&,|操作符,当一个操作符是用于两个Q对象时,会产生一个新的Q对象 #查找以"aaa"开头,或者以"bbb"结尾的所有title Q(...title__startswith="aaa") | Q(title__endswith="bbb") Q对象可以用"~"操作符放在表达式前面表示否定,也可允许否定与不否定形式的组合 #查找以"aaa"

    7.1K10

    Django的Manager和QuerySet

    Django的Manager和QuerySet 要从数据库检索对象,需要通过模型类的 Manager 构建一个 QuerySet。...models本身没有什么需要多说的,Django 使用了一套直观的系统:一个模型类代表一张数据表,一个模型类的实例代表数据库表中的一行记录。 模型类的save方法可以插入,更新,删除数据。...不过,若你想将 objects 用作字段名,或想使用 objects 以外的 Manager 名字,就要在模型基类中重命名。...使用len()函数求QuerySet的长度,比起使用QuerySet的count()方法效率要低一些,count()方法实际对应于数据库的聚合函数COUNT,它是数据库层面的操作,而非python。...字段查找 由于字段查询非常多,也非常常用,本文不进行说明。请直接参考Django字段查询 参考资料: 执行查询 QuerySet API参考 管理器

    1.1K30

    Django学习笔记之Queryset详解

    另外,查询到的QuerySet又是缓存的,当再次使用同一个QuerySet时,并不会再查询数据库,而是直接从缓存获取(不过,有一些特殊情况)。...可以看到,filter()的参数是变个数的键值对,而不会出现>,Q或exclude(),不过对于!=,建议使用Q查询,更不容易出错。...(对应and/or/not) 如果有or等逻辑关系呢,那就用Q类,filter中的条件可以是Q对象与非Q查询混和使用,但不建议这样做,因为混和查询时Q对象要放前面,这样就有难免忘记顺序而出错,所以如果使用...Q对象也很简单,就是把原来filter中的各个条件分别放在一个Q()即可,不过我们还可以使用或与非,分别对应符号为”|”和”&”和”~”,而且这些逻辑操作返回的还是一个Q对象,另外,逗号是各组条件的基本连接符...数量,字段命名为ut_num,返回的QuerySet中的每个object都有 #这个字段。

    2.7K30

    【Python全栈100天学习笔记】Day41 Django深入理解框架

    说明2:查询多个对象的时候返回的是QuerySet对象,QuerySet使用了惰性查询,即在创建QuerySet对象的过程中不涉及任何数据库活动,等真正用到对象时(求值QuerySet)才向数据库发送SQL...字段对应到数据库表中的列名,未指定时直接使用字段的名称 db_index 设置为True时将在该字段创建索引 db_tablespace 为有索引的字段设置使用的表空间,默认为DEFAULT_INDEX_TABLESPACE...创建对象时写入权限表的额外权限 default_permissions 默认为('add', 'change', 'delete') unique_together 设定组合在一起时必须独一无二的字段名.../ iregex:基于正则表达式的模糊匹配查询 Q对象(用于执行复杂查询)的使用: >>> from django.db.models import Q >>> Emp.objects.filter(...Q(sal__gte=5000) | Q(comm__gte=1000) ... ) # 查询名字以“张”开头且工资大于等于5000或补贴大于等于1000的员工 QuerySet [<Emp: 张三丰

    2.3K30

    Django MVT之M

    所有数据字段的属性都必须继承自抽象类django.db.models.Field,开发者可以继承该抽象类来定义自己的字段类型,当然也可以使用Django自带的一系列Field子类。...使用时,需引入django.db.models包,常用字段类型如下: 字段类型 描述 AutoField 根据实际ID自动增长的整数字段,通常不需要直接使用,Django会自动生成ID字段并且自动增长。...可以对Q对象进行& | ~操作,表示SQL语句中的逻辑运算符not and or,使用之前需要导入Q类。...from django.db.models import Q # 查询id大于3且学校为北京大学的学生 StudentInfo.objects.filter(Q(id__gt=3) & Q(school...StudentInfo.objects.filter(~Q(id__gt=3)) 聚合 对QuerySet对象调用aggregate方法表示 对查询结果进行聚合操作,返回的是一个字典,使用前需导入相应的聚合类

    1K10
    领券