首页
学习
活动
专区
圈层
工具
发布

Django中的QuerySet

一、QuerySet   查询集,类似一个列表,包含了满足查询条件的所有项。QuerySet 可以被构造,过滤,切片,做为参数传递,这些行为都不会对数据库进行操作。只有你查询的时候才真正的操作数据库。...意味着QuerySet是惰性执行的----即创建查询集不会带来任何的数据库访问,直到查询集需要求值的时候,Django才会真正运行这个查询。... exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象 values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet... distinct(): 从返回结果中剔除重复纪录(如果你查询跨越多个表,可能在计算QuerySet时得到重复的结果。... count(): 返回数据库中匹配查询(QuerySet)的对象数量。

2K32

Django的Manager和QuerySet

models本身没有什么需要多说的,Django 使用了一套直观的系统:一个模型类代表一张数据表,一个模型类的实例代表数据库表中的一行记录。 模型类的save方法可以插入,更新,删除数据。...在Django中,模型的Manager提供了接口,它赋予了 Django 模型操作数据库的能力。默认情况下,Django 为每个模型类添加了一个名为 objects 的 Manager。...() 会返回包含所有 Person 对象的列表。...有关如何自定义Manager,在Django管理器中有详细说明。 QuerySet 一个 QuerySet 代表来自数据库中对象的一个集合。它可以有 0 个,1 个或者多个 filters。...在Django的文档中,明确的告诉了开发者,什么时候QuerySet被执行。因为这影响到SQL执行效率。

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

    Django学习笔记之Django QuerySet的方法

    一般情况下,我们在写Django项目需要操作QuerySet时一些常用的方法已经满足我们日常大多数需求,比如get、filter、exclude、delete神马的感觉就已经无所不能了,但随着项目但业务逻辑越来越复杂...,annotate返回的是一个包含注解值的queryset,而aggregate则单独返回注解值,返回类型是一个dict,当然,这种方式在文档中叫做聚合查询,具体使用如下: >>> q = Blog.objects.aggregate...后来发现是酱紫滴,一个复杂滴model可能你从数据库中读出后根本不需要某些字段,读了又浪费时间浪费空间,怎么办?对!...你还阔以defer model中的外键,但是你需要提使用 select_related() 载入关联 model,具体用法: Blog.objects.select_related().defer("entry...答案在这里: django.models 的 on_delete参数,此参数有以下几个可选值: CASCADE:这就是delete()的默认选项,也就是关联删除 PROTECT:如果删除的model obj

    89450

    【Django】QuerySet以及Pickle 序列化在Django中的深度运用详解

    切片未执行的QuerySet通常会返回另一个未执行的Query Set。但是,如果使用切片语法的step参数,Django将执行数据库查询并返回一个列表。...对执行的QuerySet进行切片也会返回一个列表。...Django为此提供了count()方法。 Pickle 序列化 QuerySet 如果pickle以序列化QuerySet,这将强制在pickle序列化之前将所有结果加载到内存中。...WHERE NOT pub_date > '2005-1-3' AND NOT headline = 'Hello' 使用提供的查询表达式列表注释QuerySet中的每个对象。...annotation()的每个参数都是一个注释,将添加到返回的QuerySet中的每个对象。 Django提供的聚合函数在以下聚合函数中进行了描述。

    2.6K10

    【实测】django的QuerySet 应该怎么用?

    其实就是查询的意思。 所以,queryset 是什么?是查询结果的集合的意思。 我就不用那些标准的百度百科的回答了,咱直接上代码,从数据直接拿出来的数据来当例子,你就明白了。...我们用数据工厂平台的代码做演示,目前的models.py中的超链接表,存放数据为这样的,有俩个字段: 如图,俩个字段分别是link_name和link_url。...所以queryset的另一个特性就是可以像列表一样遍历和用下标定位具体内部元素: 遍历的具体子元素,都是一个个货真价实的数据记录哈。 别看我直接输出,就显示一个link_name的值。...此时我们得到的仍然是queryset,但结果中,却显示了所有字段。 这样我们用起来就更方便。为什么这么说呢? 因为我们可以把它外面再加上list() 变成我们python常用的格式了。...注意,此时的结果,变成了 列表里面套字典的样式,这回我们可以说随便摆弄了吧? 而且这个格式,可以直接传给前端的js函数中也就是bom层来使用。

    84010

    django 的form规则组件的笔记(附代码)

    9.4 initial=None 9.5 obj.as_p 9.6 disabled=False, 9.7 widget=None 10 widget属性可以定义html哪些插件 10.0 choices的选项可以从数据库中获取...里面就是写对一个表的规则,比如用户登录的规则,对用户名密码的长度进行判断 from django.forms import Form from django.forms import fields...默认渲染input框; 我们在自定义admin后台的新增页面,或者修改页面的时候,就可以根据这个属性进行自定义标签形式; 10 widget属性可以定义html哪些插件 10.0 choices的选项可以从数据库中获取..., (2, '北京'),) # 或 self.fields['user'].widget.choices = models.Classes.objects.all().value_list...('id','caption') 方式二: 使用django提供的ModelChoiceField和ModelMultipleChoiceField字段来实现 from django import forms

    1.3K10

    day67-Django进阶-ORM操作数据库+django环境搬运

    1.如何新建Django超级用户 [在终端输入 python manage.py createsuperuser 依次输入用户名密码] [项目启动后,访问 /admin/ ,输入用户名密码]...Meta 01.3 配置库.png 6.如何搬运Django环境,在一个py文件里面实现ORM操作 from app01 import xx 只能写在 django.set_up() 后面 image.png....values() image.png .value_list() image.png .order_by() image.png .reverse() image.png .distinct() image.png...image.png 11.反向查询之定制名称 image.png 12.反向查询之连接表示例(其实和正向一样) image.png image.png 13.多对多 + 一对多 add() 一对多 # 将 QuerySet...传入不用打散 models.Publisher.objects.get(id=3).book_set.add(*books) add() 多对多 # 将 QuerySet 里面的对象保留已有外键,新增指向自己的外键

    67500

    Vue+Django2.0 REST framework 打造前后端分离的生鲜电商项目(五)商品列表页

    一、Django2.0的view实现商品列表页 算是对以前django知识的一个回顾,方便跟下面的drf(Django REST framework)实现商品列表页作对比 1.在apps/goods下新建...def __str__(self): 2 return self.username 三、drf实现商品列表页的功能 1.ModelSerializer(相当于django中的modelform...4.drf的request和response request.data返回请求主体的解析内容,这与django本身的request.POST+request.FILES属性类似。...不同之处: 它包括所有解析的内容,包括文件和非文件输入。 它支持解析HTTP方法以外的内容POST,这意味着你可以访问内容PUT和PATCH请求。...parsers解析器,通过对应方法,解析传过来的各种类型数据。

    5.2K61

    一篇文章浅析Django Form组件相关知识

    前言 在上一篇时,我们小试牛刀了以下Django Form组件的使用,一篇文章带你了解Django Form组件(入门篇),没来得及的小伙伴可以一起看看。但是你可能会有很多疑问,并不知道怎么使用。...Form组件的理解 没有使用Form组件时 在一般情况下,我们如果编写输入框时,在Html中,一般都是这样写的。 代码 ......import ModelChoiceField # 单选 ModelChoiceField(ChoiceField) queryset=None # 查询数据库中的数据 empty_label...中对queryset二次筛选 # 多选 from django.forms.models import ModelMultipleChoiceField ModelMultipleChoiceField...form_model.ModelMultipleChoiceField(queryset=models.Depart.objects.all()) 总结 本篇先从入门角度说如何使用简单使用Django

    1.3K30

    Django+Vue开发生鲜电商平台之5.使用DRF实现商品列表页和过滤

    一、普通方式实现商品列表页 先了解Django中实现Json数据传递的基本方法,可以查看中文文档https://www.cntofu.com/book/35/index.html,并结合英文文档了解其用法...但是从代码中可以看到: 通过在新建列表、其元素为单个商品信息组成的字典,一个一个地添加,显得很麻烦,可进行改进; 有些字段不能直接用json.dumps()方法序列化,如datetime,会报错,如商品列表视图修改为如下时...Django中有Form,也有ModelForm,DRF中也有ModelSerializer,相比于Serializer,它省去了模型所有字段的添加和处理数据方法的实现,serializers.py简化如下...request.data返回请求正文的解析内容,代替了标准request.POST和request.FILES属性,具体如下: 它包括所有已解析的内容,包括文件和非文件输入; 它支持解析除以外的HTTP...还支持定义自己的自定义解析器,这使您可以灵活地设计API接受的媒体类型。

    6.1K20

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

    对象的列表。...例如,下面这个自定义的 管理器提供了一个 with_counts() 方法,它返回所有 OpinionPoll 对象的列表,而且列表中的每个对象都多了一个名为 num_responses的属性,这个属性保存一个聚合查询...Django 会将模型中定义的管理器解释为默认的 管理器,并且 Django 中的一部分应用(包括数据备份)会使用默认的管理器,除了前面那个模型。...定义在抽象基类中的管理器总是被子类继续的,是按 Python 的命名解析顺序解析的(首先是子类中的命名覆盖所有的,然后是第一个父类的,以此类推)。...如果在模型中的默认 管理器(在这些情况中仅考虑默认管理器)中设置了这个属性,那么无论它是否需要被自动创建,Django 都会自动使用它。

    1.5K20

    django 1.8 官方文档翻译: 3-4-2 内建显示视图

    此外,有问题的模型可以作为一个额外的参数传递到URLconf中。 Django通过通用视图来完成下面一些功能: 为单一的对象展示列表和一个详细页面。...因为这是如此常见 的任务,Django提供了一大把内置的通用视图,使生成对象的展示列表和详细视图 的变得极其容易。 让我们来看一下这些通用视图中的”对象列表”视图。...当你处理 一个object或者queryset时,Django能够使用你定义对象显示用的自述名(verbose name,或者复数的自述名,对于对象列表)来填充上下文(context)。...然而,model参数并不是唯一能够指明视图要基于哪个对象进行操作的方法 – 你同样可以使用queryset参数来指定一个对象列表: from django.views.generic import DetailView...详见基于类的视图参考。 动态过滤 另一个普遍的需求是在给定的列表页面中根据URL中的关键字来过滤对象。

    2.3K40

    django-rest-framewor

    DRF(Django RestFramework)是一套基于Django开发的、帮助我们更好的设计符合REST规范的Web应用的一个Django App,所以,本质上,它是一个Django App。...2 解析器组件 (用来解析数据的请求的组件)   Django并不能处理请求协议为application/json编码协议的数据   注意: DRF解析器会封装到View中的parsers内,在视图函数被调用时...定义需要返回的字段(字段类型可以与model中的类型不一致,参数也可以调整),字段名称必须与model中的一致 在GET接口逻辑中,获取QuerySet 开始序列化:将QuerySet作业第一个参数传给序列化类...,many默认为False,如果返回的数据是一个列表嵌套字典的多个对象集合,需要改为many=True 返回:将序列化对象的data属性返回即可  {{ 实践代码 }} --post接口设计 url...retrieve,有一行instance = self.get_object(), 该方法在GenericAPIView中 至关重要的是拿到self.kwargs中的pk关键字,然后从queryset中拿到想要的数据

    2.1K10
    领券