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

Django学习笔记:QuerySet API

prefetch_related:这个方法和select_related非常的类似,就是在访问多个表中的数据的时候,减少查询的次数。这个方法是为了解决多对一和多对多的关系的查询问题。...only:跟defer类似,只不过defer是过滤掉指定的字段,而only是只提取指定的字段。 get:获取满足条件的数据。...如果想要知道总共有多少条数据,那么建议使用count,而不是使用len(articles)这种。因为count在底层是使用select count(*)来实现的,这种方式比使用len函数更加的高效。...first和last:返回QuerySet中的第一条和最后一条数据。 aggregate:使用聚合函数。 exists:判断某个条件的数据是否存在。...切片操作:有时候我们查找数据,有可能只需要其中的一部分。那么这时候可以使用切片操作来帮我们完成。QuerySet使用切片操作就跟列表使用切片操作是一样的。

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

    Django ORM 单表操作

    ') filter 查询 filter() 方法用于查询符合条件的数据 返回的是 QuerySet 类型数据,类似于 list,里面放的是满足条件的模型类的对象,可用索引下标取出模型类的对象...') order_by 排序 order_by() 方法用于对查询结果进行排序,返回的是 QuerySet类型数据,类似于list,里面放的是排序后的模型类的对象,可用索引下标取出模型类的对象...") values 查询字段 返回的是 QuerySet 类型数据,类似于 list,里面不是模型类的对象,而是一个可迭代的字典序列,字典里的键是字段,值是数据 def book(request...和values_list区别 values查询返回的结果是列表套字典的形式,字段名和数据都能够获取到 values_list查询返回的结果是列表套元组的形式,只返回数据 distinct 去重 distinct...() 方法用于对数据进行去重,返回的是 QuerySet 类型数据 注意: 对模型类的对象去重没有意义,因为每个对象都是一个不一样的存在(主键不一样),去重的前提是数据必须是一模一样,不能加主键,有

    1.7K20

    05.Django基础五之django模型层(一)单表操作

    类似 DateField 支持同样的附加选项. ImageField 类似 FileField, 不过要校验上传对象是否是一个合法图片.... FilePathField 可选项目为某个特定目录下的文件名. 支持三个特殊的参数, 其中第一个是必须提供的....(4)unique 如果该值设置为 True, 这个数据字段的值在整张表中必须是唯一的 (5)choices 由二元组组成的一个可迭代对象(例如,列表或元组),用来给字段提供选择项。...) 同样这种方法不能自动更新具有auto_now属性字段的值 通常我们再变量前加一个星号(*)表示这个变量是元组/列表,加两个星号表示这个参数是字典 方法二: data = {'username':...)                  order_by(*field): queryset类型的数据来调用,对查询结果排序,默认是按照id来升序排列的,返回值还是queryset类型

    3.5K10

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

    QuerySet QuerySet本身可以在不访问数据库的情况下构造、过滤、切片或复制和分配。只需要在需要从数据库检索数据或将数据保存到数据库时访问数据库。...切片未执行的QuerySet通常会返回另一个未执行的Query Set。但是,如果使用切片语法的step参数,Django将执行数据库查询并返回一个列表。...对执行的QuerySet进行切片也会返回一个列表。...QuerySet类具有以下公共属性,可用于内省: 有序 True如果QuerySet是有序的–有一个order_by()子句或模型的默认排序。否则,这是错误的。...使用关键字参数指定的注释使用关键字作为注释的别名。匿名参数将根据聚合函数的名称和聚合模型字段为其生成别名。只有引用单个字段的聚合表达式才能成为匿名参数。其他所有内容都必须是关键字参数。

    2.7K10

    python 终级篇 django --

    (): 对查询结果反向排序,请注意reverse()通常只能在具有已定义顺序的QuerySet上调用(在model类的Meta中指定ordering或调用order_by()方法...此时可以使用distinct(),注意只有在PostgreSQL中支持按字段去重。) count(): 返回数据库中匹配查询(QuerySet)的对象数量。...包含数据,就返回True,否则返回False 返回QuerySet对象的方法有 all() filter() exclude() order_by() reverse() distinct() 特殊的QuerySet...')) Django 支持 F() 对象之间以及 F() 对象和常数之间的加减乘除和取模的操作。...所有提供给查询函数的参数(关键字参数或Q 对象)都将"AND”在一起。但是,如果出现Q 对象,它必须位于所有关键字参数的前面。 例如:查询出版年份是2017或2018,书名中带物语的所有书。

    3.4K20

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

    () 和 .count() 和 .aggregate() 为方法,前两者是返回新的查询集的方法(括号里面有参数),后两者是不返回查询集的方法 。...每本书和作者是多对多的关系。我们想要汇总QuerySet.中每本书里的这种关系。逐个对象的汇总结果可以由annotate()子句生成。...annotate()子句的返回结果是一个查询集 (QuerySet);这个 QuerySet可以用任何QuerySet方法进行修改,包括 filter(), order_by()。...(这些出版商中每个出版商发行的所有书评分都必须>3) order_by() >>> Book.objects.annotate(num_authors=Count('authors')).order_by...order_by(*fields): 默认情况下,QuerySet 根据模型Meta 类的ordering 选项排序。你可以使用order_by 方法给每个QuerySet 指定特定的排序。

    2.1K20

    Django中的QuerySet

    一、QuerySet   查询集,类似一个列表,包含了满足查询条件的所有项。QuerySet 可以被构造,过滤,切片,做为参数传递,这些行为都不会对数据库进行操作。只有你查询的时候才真正的操作数据库。...意味着QuerySet是惰性执行的----即创建查询集不会带来任何的数据库访问,直到查询集需要求值的时候,Django才会真正运行这个查询。...,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列 values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列...QuerySet上调用(在model类的Meta中指定ordering或调用order_by()方法)。... count(): 返回数据库中匹配查询(QuerySet)的对象数量。

    2K32

    python测试开发django-14.查询表结果(超详细)

    前言 django查询数据库的方法很多,不同的方法返回的结果也不太一样,本篇详细讲解关于查询的13个方法 返回对象是对象列表的: all(), filter(), exclude(), order_by...() 返回的是整个表的内容, 这里返回的是可迭代对象queryset,并没直接返回全部数据 如果想取出数据,需要用到for循环读取 from django.http import HttpResponse...对查询结果排序 由queryset对象调用,返回值是queryset 查询所有的数据,按mail字段排序,默认升序 ret=User.objects.all().order_by(“mail”...().order_by(“mail”).reverse() values_list() 由queryset对象调用, 返回值是queryset 一个元组序列 和values差不多,只是这里返回的是元组...查询第一个结果:0 查询最后结果:283340479@qq.com exists()和count() exists() 如果QuerySet包含数据,就返回True,否则返回False 由queryset

    1.4K20

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

    查询集参考中列出了聚合函数的列表。 aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。键的名称是聚合值的标识符,值是计算出来的聚合值。...annotate()子句的返回结果是一个查询集 (QuerySet);这个 QuerySet可以用任何QuerySet方法进行修改,包括 filter(), order_by(), 甚至是再次应用annotate...和 跨关系查找的方法类似,作用在你所查询的模型的关联模型或者字段上的聚合和注解可以遍历”反转”关系。...与默认排序或order_by()交互 在查询集中的order_by() 部分(或是在模型中默认定义的排序项) 会在选择输出数据时被用到,即使这些字段没有在values() 调用中被指定。...所以,你应该这样改写: Item.objects.values("data").annotate(Count("id")).order_by() …这样就清空了查询中的所有排序项。

    2.5K30

    DRF二级视图GenericAPIView

    GenericAPIView GenericAPIView继承自APIView,增加了对于列表视图和详情视图可能用到的通用支持方法。通常使用时,可搭配一个或多个Mixin扩展类。...列表视图:获取多条数据(或全部数据),例如:获取所有书籍 详情视图:获取单个数据,例如:获取《西游记》的价格,作者,出版社等信息。...列表视图与详情视图通用 queryset 应用于从此视图返回对象的查询集。通常,您必须设置此属性或覆盖该get_queryset()方法。...方法 列表视图与详情视图通用 get_queryset(self) 返回视图使用的查询集,是列表视图与详情视图获取数据的基础,默认返回queryset属性,可以重写,例如: def get_queryset...“这两者使用的URL是相同的,而后面的查询一条数据详情,修改一条已有数据,删除一条数据的URL是相同的。”

    88010

    django-7-django模型系统

    模型类上的管理器(class.objects)  queryset (惰性,,没有操作数据库)表示数据库中对象的集合,等同于select 语句   query 获取mysql 语句  first()...) 根据给定的条件获取过滤后的queryset,多个条件用','连接  exclude(**kwargs) 作用和filter相反,去除不符合条件的对象  多条件的or连接  from django.db.models...import Q  Q(age=1) | Q(age=0)  返回某个字段  values(*fileds) field指定字段,返回一个queryset,返回一个‘字典列表’  only(*fields...) 与values差不多,返回queryset,‘对象列表’,必须带上主键  defer(*field) 和only功能相反,用法一样,返回一个queryset,对象列表,排除  排序  order_by...(*fields) 根据给定的字段来排序   如果要反序就在field前加'-'  切片 和python切片用法相似,不支持复索引,数据大的时候不用步长  ***切片后不再支持附加条件与排序  *多字段排序有什么用

    1.2K10

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

    我特意去查了一下,结果为: 1 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。...2 它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。 显然,这解释不像人话,于是我觉得自己动手丰衣足食才是硬道理。...4.drf的request和response request.data返回请求主体的解析内容,这与django本身的request.POST+request.FILES属性类似。...不同之处: 它包括所有解析的内容,包括文件和非文件输入。 它支持解析HTTP方法以外的内容POST,这意味着你可以访问内容PUT和PATCH请求。...它支持REST框架的灵活请求解析,而不仅仅是支持表单数据。例如,您可以像处理传入表单数据一样处理传入的JSON数据。

    5.2K61

    【玩转全栈】----靓号管理系统实现

    ).order_by('-level') return render(request,'vanity_show.html',{'form':form,'queryset':queryset,'search_data...':search_data}) 这里通过GET传参获取q和一个空字符串,作用是使当q无值时,默认为空,以避免因data_list无值而产生报错;对search_data运行正则提取第一个出现的连续数字...queryset = Vanitynumber.objects.filter(**data_list).order_by('-level')[start:end] 对于多行数据,一页是放不下的,可以一页放一定的数据...此时,对于第一页:页数是1,数据是(0,10) 第二页:页数是2,数据是(10,20) ..................第 n 页:页数是n,数据是((n-1)×10,n×10) 数据库中的数据条数是可以用函数得到的: num = Vanitynumber.objects.all().count() 所以可通过总数据条数反推页数

    33300

    Django学习-第十讲(上):QuerySet API 学习

    其实模型名字.objects是一个django.db.models.manager.Manager对象,而Manager这个类是一个“空壳”的类,他本身是没有任何的属性和方法的。...是类似于{"title":"abc","content":"xxx"}的形式 6.values_list:类似于values。...比如可以提前获取文章的作者,但是不能通过作者获取这个作者的文章,或者是通过某篇文章获取这个文章所有的标签 9.prefetch_related:这个方法和select_related非常的类似,就是在访问多个表中的数据的时候...() print(connection.queries) 我们可以看到在打印connection.quries的时候打印的是一个空的列表。...比如以下代码就会转换为SQL语句: for book in Book.objects.all(): print(book) 使用步长做切片操作:QuerySet可以类似于列表一样做切片操作。

    78220
    领券