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

Django(19)QuerySet API

其实模型名字.objects是一个django.db.models.manager.Manager对象,而Manager这个类是一个“空壳”的类,他本身是没有任何的属性和方法的。...annotate annotate:给QuerySet中的每个对象都添加一个使用查询表达式(聚合函数、F表达式、Q表达式、Func表达式等)的新字段。...select_related select_related:在提取某个模型的数据的同时,也提前将相关联的数据提取出来。...Django将QuerySet转换为SQL语句去执行的五种情况 迭代:在遍历QuerySet对象的时候,会首先先执行这个SQL语句,然后再把这个结果返回进行迭代。...调用list函数:调用list函数用来将一个QuerySet对象转换为list对象也会立马执行SQL语句。 判断:如果对某个QuerySet进行判断,也会立马执行SQL语句。

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

    Django中的QuerySet

    一、QuerySet   查询集,类似一个列表,包含了满足查询条件的所有项。QuerySet 可以被构造,过滤,切片,做为参数传递,这些行为都不会对数据库进行操作。只有你查询的时候才真正的操作数据库。...意味着QuerySet是惰性执行的----即创建查询集不会带来任何的数据库访问,直到查询集需要求值的时候,Django才会真正运行这个查询。...get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。... exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象 values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet... count(): 返回数据库中匹配查询(QuerySet)的对象数量。

    1.7K32

    django合并多个queryset

    这几天正在做一个关于权限控制的django框架,今天上午遇见了一个bug,因为我的需求是,每个人拥有的权限不同,所以你所能够访问的菜单也不同,那么这时候不同的人员访问不同的菜单是不一样的。...那么我可以把他所能够操作的菜单通过关联表的id查出来,但是我前台的代码是只能解析一个queryset的,那么我便利用chain方法将他们变为一个queryset; 以下是我的代码: all_actor...menu_list = chain(all_actor) print(menu_list) return menu_list django...| a2 注:这种方式合并的结构还是一个queryset,相当于a3把a1和a2的条件合并了,推荐,因为可以用order_by等函数了 只能合并同种model对象的数据` 2, 用python的chain...,把a1和a2分别求出来之后合并成了一个可迭代对象, 他可以作用于其他可迭代对象中他可以把不同model的对象合并,类似于与list相加

    3K30

    Django 2.1.7 查询集 QuerySet

    上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的介绍F对象、Q对象、聚合查询等功能。...不管什么查询,返回的结果都基本是查询集QuerySet,如下: In [16]: MiddlewareInfo.objects.all() Out[16]: QuerySet [<MiddlewareInfo...返回单个值的过滤器如下: get():返回单个满足条件的对象 如果未找到会引发"模型类.DoesNotExist"异常。...在新建的查询集中,缓存为空,首次对查询集求值时,会发生数据库查询,django会将查询的结果存在查询集的缓存中,并返回请求的结果,接下来对查询集求值将重用缓存中的结果。...如果获取一个对象,直接使用[0],等同于[0:1].get(),但是如果没有数据,[0]引发IndexError异常,[0:1].get()如果没有数据引发DoesNotExist异常。

    1.4K10

    Django学习笔记:QuerySet API

    其实模型名字.objects是一个django.db.models.manager.Manager对象,而Manager这个类是一个“空壳”的类,他本身是没有任何的属性和方法的。...这说明filter返回的对象是一个拥有order_by方法的对象。而这个对象正是一个新的QuerySet对象。因此可以使用order_by方法。...select_related:在提取某个模型的数据的同时,也提前将相关联的数据提取出来。...什么时候Django会将QuerySet转换为SQL去执行: 生成一个QuerySet对象并不会马上转换为SQL语句去执行。...调用list函数:调用list函数用来将一个QuerySet对象转换为list对象也会立马执行SQL语句。 判断:如果对某个QuerySet进行判断,也会立马执行SQL语句。

    78420

    Django学习笔记之Django QuerySet的方法

    一般情况下,我们在写Django项目需要操作QuerySet时一些常用的方法已经满足我们日常大多数需求,比如get、filter、exclude、delete神马的感觉就已经无所不能了,但随着项目但业务逻辑越来越复杂...django才会从数据库读取这些数据,感觉在数据量变大后用这个方法很nice,具体用法如下: Blog.objects.defer("content").filter(publish=True).defer...time', 'black') 当你使用链式方法调用only时只有最后一个only内的参数会立即返回,其他参数都会被defer,注意这里only的覆盖性~ 5、create(**kwargs) 创建并保存对象...一般我们要新建一个model对象时直接使用他的构造函数或者使用.语法赋值,最后调用.save()方法保存。...嗯,实话告诉你,默认情况下调用delete()是会删除所有有关的外键对象的(是不是突然感觉自己之前代码里有坑了)所以我们需要详细说说这个方法,如何做才能让他不删除对应的外键或者说按照我们想象的方式进行删除呢

    73450

    Django学习笔记之Queryset详解

    Django ORM用到三个类:Manager、QuerySet、Model。...1.3 序列化,即Pickling 序列化QuerySet很少用。 1.4  repr() 和str()功能相似,将对象转为字符串,很少用。...QuerySet的方法 数据库的常用操作就四种:增、删、改、查,QuerySet的方法涉及删、改、查。后面还会讲model对象的方法,model方法主要是增、删、改、还有调用model实例的字段。...Q查询混和使用,但不建议这样做,因为混和查询时Q对象要放前面,这样就有难免忘记顺序而出错,所以如果使用Q对象,那就全部用Q对象。...代码2中,当遍历开始前,先拿到Entry的QuerySet,并且也拿到这个QuerySet的每个object中的blog对象,这样遍历过程中,就不用再查询数据库了,这样就减少了数据库读次数。

    3.3K30

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

    所以,queryset 是什么?是查询结果的集合的意思。 我就不用那些标准的百度百科的回答了,咱直接上代码,从数据直接拿出来的数据来当例子,你就明白了。...好然后我们用一段函数来把数据从中取出来并打印: 结果如下: 可以看到,直接从数据库用.all 或者.filter方法拿出来的 结果是queryset,也就是查询集合。...所以queryset的另一个特性就是可以像列表一样遍历和用下标定位具体内部元素: 遍历的具体子元素,都是一个个货真价实的数据记录哈。 别看我直接输出,就显示一个link_name的值。...此时我们得到的仍然是queryset,但结果中,却显示了所有字段。 这样我们用起来就更方便。为什么这么说呢? 因为我们可以把它外面再加上list() 变成我们python常用的格式了。

    73310

    Django 2.1.7 查询集 QuerySet

    上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的介绍F对象、Q对象、聚合查询等功能。...不管什么查询,返回的结果都基本是查询集QuerySet,如下: In [16]: MiddlewareInfo.objects.all() Out[16]: QuerySet [<MiddlewareInfo...返回单个值的过滤器如下: get():返回单个满足条件的对象 如果未找到会引发"模型类.DoesNotExist"异常。...在新建的查询集中,缓存为空,首次对查询集求值时,会发生数据库查询,django会将查询的结果存在查询集的缓存中,并返回请求的结果,接下来对查询集求值将重用缓存中的结果。...如果获取一个对象,直接使用[0],等同于[0:1].get(),但是如果没有数据,[0]引发IndexError异常,[0:1].get()如果没有数据引发DoesNotExist异常。

    98620

    【Django models】QuerySet API详解-filter、exclude、annotate

    QuerySet API详解-filter、exclude、annotate: 在使用 QuerySet 进行查找操作的时候,可以提供多种操作。...这说明 filter 返回的对象是一个拥有 order_by 方法的对象。而这个对象正是一个新的 QuerySet 对象。因此可以使用 order_by 方 法。...那么以下将介绍在那些会返回新的 QuerySet 对象的方法。 1. filter :将满足条件的数据提取出来,返回一个新的 QuerySet 。具体的 filter 可以提供什么条件查询。...2. exclude :排除满足条件的数据,返回一个新的 QuerySet 。...3. annotate :给 QuerySet 中的每个对象都添加一个使用查询表达式(聚合函数、F表达式、Q表达式、Func表达式等)的新字段。

    1.3K20
    领券