上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的介绍F对象、Q对象、聚合查询等功能。...不管什么查询,返回的结果都基本是查询集QuerySet,如下: In [16]: MiddlewareInfo.objects.all() Out[16]: QuerySet [查询集,第一次使用时会发生数据库的查询,然后把结果缓存下来,再次使用这个查询集时会使用缓存的数据。 查询集的缓存 每个查询集都包含一个缓存来最小化对数据库的访问。...在新建的查询集中,缓存为空,首次对查询集求值时,会发生数据库查询,django会将查询的结果存在查询集的缓存中,并返回请求的结果,接下来对查询集求值将重用缓存中的结果。...对查询集进行切片后返回一个新的查询集,不会立即执行查询。
>>> from django.contrib.auth.models import User >>> User.objects.none() QuerySet []> 以上就是本文的全部内容,如果觉得还不错的话
上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的介绍F对象、Q对象、聚合查询等功能。...不管什么查询,返回的结果都基本是查询集QuerySet,如下: In [16]: MiddlewareInfo.objects.all() Out[16]: QuerySet [查询集,第一次使用时会发生数据库的查询,然后把结果缓存下来,再次使用这个查询集时会使用缓存的数据。 查询集的缓存 每个查询集都包含一个缓存来最小化对数据库的访问。...在新建的查询集中,缓存为空,首次对查询集求值时,会发生数据库查询,django会将查询的结果存在查询集的缓存中,并返回请求的结果,接下来对查询集求值将重用缓存中的结果。...” 对查询集进行切片后返回一个新的查询集,不会立即执行查询。
Django Form类定义中有一个 ModelChoiceField 对应的是Model 的外键,queryset 是返回一个查询集对象 例如,我有一个Form class BookForm(forms.Form...): books = forms.ModelChoiceField(queryset=Books.objects.all()) 这似乎并没有什么问题。...在视图中修改queryset对象 form = BookForm() form.fields['books'].queryset = Books.objects.filter(id=1).all() 如果要设置默认值可以通过
查询集 QuerySet 查询集,也称查询结果集、QuerySet,表示从数据库中获取的对象集合。...当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表): all():返回所有数据。 filter():返回满足条件的数据。 exclude():返回满足条件之外的数据。...() 继续执行遍历迭代操作后,才真正的进行了数据库的查询 for book in qs: print(book.btitle) 2>缓存 使用同一个查询集,第一次使用时会发生数据库的查询,然后Django...会把结果缓存下来,再次使用这个查询集时会使用缓存的数据,减少了数据库的查询次数。...1>修改原始查询集,重写all()方法。
我打算和朋友合写一个中文的django教程,先在这里进行总结一下简单的数据库api。...查询所有记录 >>> from polls.models import Question, Choice >>> Question.objects.all() QuerySet [>> q.save() 条件查询 # 按照字段查询 >>> Question.objects.filter(id=1) QuerySet []> # 使用富api查询,双下划线来表示关系 >>> Question.objects.filter(question_text__startswith='What') QuerySet []> # 如果结果不存在filter方法返回空的QuerySet >>> Question.objects.filter(id=2) QuerySet []> # 得到今年的所有问题 >>> from
特别点 本文将翻译 django 官网的 模型层的 QuerySet 章节 文档版本:1.11 Making queries 进行查询 一旦你创建了 数据表模型类,django 会自动给你一些数据库抽象...新创建的 QuerySet 的缓存(cache)是空的,QuerySet 第一次取值执行(evaluatad)的时候进行数据库查询操作,Django 会将查询结果保存到 QuerySet 的 cache...缓存中,并返回查询出来的结果集。...,具体来说,这意味着使用数组切片或者索引限制查询结果集将不会保存缓存。...,双下划线查询) 此部分参考文档: django官网 字段查找(field-lookups) 字段查找(field-lookups)对应的是 SQL 语句中的 WHERE 条件,一般放在 QuerySet
本文从Django官方文档总结而来,将聚合的主要用法和查询集的常见方法做一归纳。 聚合 1....2.django提供了两种生成聚合的方法 1)从整个查询集生成统计值,主要用法:aggregate(*args, **kwargs) aggregate()是QuerySet 的一个终止子句,也就是说...annotate()子句的返回结果是一个查询集 (QuerySet);这个 QuerySet可以用任何QuerySet方法进行修改,包括 filter(), order_by()。...(QuerySet)API 查询 本质上,可以创建、过滤、切片和传递查询集而不用真实操作数据库。...可以通过迭代、切片、序列化/缓存、repr()、len()、list()、bool() 1)返回新的查询集方法 filter(): 返回一个新的QuerySet,包含与给定的查询参数匹配的对象。
一、QuerySet何时被提交 在内部,创建、过滤、切片和传递一个QuerySet不会真实操作数据库,在你对查询集提交之前,不会发生任何实际的数据库操作。...可以使用下列方法对QuerySet提交查询操作: 迭代:QuerySet是可迭代的,在首次迭代查询集时执行实际的数据库查询。...dates() 根据日期获取查询集 datetimes() 根据时间获取查询集 none() 创建空的查询集 all() 获取所有的对象 union() 并集 intersection...b = e.blog select_related()可用于objects任何的查询集: from django.utils import timezone # Find all the blogs with...当最初获取数据时不知道是否需要这些特定字段的情况下,如果正在使用查询集的结果,可以告诉Django不要从数据库中检索它们。
0909自我总结 drf框架中所有视图及用法 一.drf框架中的所有视图类 from django.views import View from rest_framework import views,...generics, mixins, viewsets 最基础:django自带的views类 drf框架中最基础的视图类:views.APIView drf框架中工具视图:generics GenericAPIView...:该视图类中的基类 mixins视图工具集: RetrieveModelMixin:retrieve 单取 ListModelMixin:list 群取 CreateModelMixin:create...:update 单整体改 UpdateModelMixin: partial_update 单局部改 DestroyModelMixin:destroy 单删 viewsets视图集 上述视图都是基于django...(*args, **kwargs):获取指定 常用的几个参数 data:用于返序列化传参 many:获取多个序列化对象 instance:如果有后面save执行更新方法,没有执行创建方法 partial
修改管理器初始的查询集 管理器自带的 查询集返回系统中所有的对象。...你可以通过重写 Manager.get_queryset() 的方法来覆盖 管理器自带的 查询集。get_queryset() 会根据你所需要的属性返回 查询集。...由于 get_queryset() 返回的是一个 查询集 对象,所以你仍可以对它使用 filter(), exclude()和其他 查询集的方法。...创建管理器 * django 1.7 中新增 * 对于上面的例子,同一个方法需要在查询集 和 管理器上创建两份副本,作为替代,QuerySet.as_manager()可以创建一个管理器的实例,它拥有自定义查询集的方法...from_queryset classmethod from_queryset(queryset_class) 在进一步的使用中,你可能想创建一个自定义管理器和一个自定义查询集。
文章目录 一、基础条件查询 1.基本查询 2.过滤查询 3.F和Q对象 4.聚合函数和排序函数 5.关联查询 6.查询集QuerySet ---- 一、基础条件查询 1.基本查询 get查询单一结果,如果不存在会抛出模型类...PeopleInfo: 王语嫣>, <PeopleInfo 6.查询集QuerySet 1 概念 Django的ORM中存在查询集的概念。...查询集,也称查询结果集、QuerySet,表示从数据库中获取的对象集合。 当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表): all():返回所有数据。...使用同一个查询集,第一次使用时会发生数据库的查询,然后Django会把结果缓存下来,再次使用这个查询集时会使用缓存的数据,减少了数据库的查询次数。...对查询集进行切片后返回一个新的查询集,不会立即执行查询。
:新增打开浏览器登录访问:http://127.0.0.1:8000/api/books/1get:查询单个对象put:修改delete:删除三、通用视图的高级用法动态查询集通过重写 get_queryset...数据查询相关方法get_queryset(self):返回视图使用的查询集,是获取数据的主要入口。...默认返回 queryset 属性定义的查询集,可重写以实现动态过滤(如返回当前用户的数据)def get_queryset(self): return self.request.user.articles.all...filter_queryset(self, queryset):应用过滤后端对查询集进行过滤,返回处理后的查询集。...paginate_queryset(self, queryset):对查询集进行分页处理,返回页面对象或 None(若未配置分页)。
查询 首先引入book/models中的类: from book.models import BookInfo 查询所有图书信息: BookInfo.objects.all() 因为当前并没有数据,所以返回空列表...>>> from book.models import BookInfo >>> BookInfo.objects.all() QuerySet []> >>> 添加 添加图书信息 from datetime...book.pub_date = date(1967, 10, 7) # 保存并向数据库表添加图书信息 book.save() 然后在查看图书信息,是否添加成功 >>> BookInfo.objects.all() QuerySet...[]> all() 是查询所有,返回一个查询集,我们来是试试 get() 条件查询 book = BookInfo.objects.get...>>> BookInfo.objects.all() QuerySet []> >>>
要有效的使用ORM,意味着需要多少要明白它是如何查询数据库的。本文我将重点介绍如何有效使用 Django ORM系统访问中到大型的数据集。...Django的queryset是惰性的 Django的queryset对应于数据库的若干记录(row),通过可选的查询来过滤。...的 当你遍历queryset时,所有匹配的记录会从数据库获取,然后转换成Django的model。...如果查询集很大的话,if 语句是个问题 如前所述,查询集缓存对于组合 if 语句和 for 语句是很强大的,它允许在一个查询集上进行有条件的循环。然而对于很大的查询集,则不适合使用查询集缓存。...最简单的解决方案是结合使用exists()和iterator(), 通过使用两次数据库查询来避免使用查询集缓存。
Python medium = Medium.objects.get(name='Django Blog') user = User.objects.get(username='vitor') django_stories...= medium.stories.all() vitor_stories = user.stories.filter(category__name='django') 此时我们有两个查询集(QuerySets...) ,我们可以通过| 运算符来合并这两个查询集。...Python stories = django_stories | vitor_stories # merge querysets 此时你依然可以使用 queryset 的一些操作方法....Python recent_stories = stories.distinct().order_by('-date')[:10] 注意: 合并运算符仅适用于同一类型的 queryset, 并且数据为切片前数据集
实现使用category查询和name字段的模糊查询#models.pyfrom django.db import models# Create your models here.# 定义一个菜品种类class....models import Dish class DishModelFilter(django_filters.FilterSet): name = django_filters.CharFilter...(self, queryset, name, value): return queryset.filter(name__icontains=value) def filter_category...(self, queryset, name, value): return queryset.filter(category_id=value) class Meta:...model = Dish fields = ['name','category']queryset是model(Dish)的查询集name是查询的字段value是查询的内容需要说明外键字段不支持模糊查询否则报错
查询 首先引入book/models中的类: from book.models import BookInfo 查询所有图书信息: BookInfo.objects.all() 因为当前并没有数据,所以返回空列表...>>> from book.models import BookInfo >>> BookInfo.objects.all() QuerySet []> >>> 添加 添加图书信息 from datetime...book.pub_date = date(1967, 10, 7) # 保存并向数据库表添加图书信息 book.save() 然后在查看图书信息,是否添加成功 >>> BookInfo.objects.all() QuerySet...[]> all() 是查询所有,返回一个查询集,我们来是试试 get() 条件查询 book = BookInfo.objects.get...>>> BookInfo.objects.all() QuerySet []> >>> 公众号 新建文件夹X 大自然用数百亿年创造出我们现实世界,而程序员用几百年创造出一个完全不同的虚拟世界。
4.3 嵌套查找 4.4 参数说明 4.5 自定义过滤器 一、普通过滤 REST 框架的通用列表视图的默认行为是返回模型管理器的整个查询集。...通常,您希望 API 限制查询集返回的项目。 筛选子类的任何视图的查询集的最简单方法是重写该方法。...GenericAPIView.get_queryset() 重写此方法允许您以多种不同的方式自定义视图返回的查询集。...筛选初始查询集的最后一个示例是根据 url 中的查询参数确定初始查询集。...= queryset.filter(purchaser__username=username) return queryset 二、通用过滤 除了能够重写默认查询集之外,REST 框架还包括对通用筛选后端的支持
一 QuerySet 可切片 使用Python 的切片语法来限制查询集记录的数目 。它等同于SQL 的LIMIT 和OFFSET 子句。...你可以将过滤器保持一整天,直到查询集 需要求值时,Django 才会真正运行这个查询。...叫做queryset缓存空间 在一个新创建的查询集中,缓存为空。首次对查询集进行求值 —— 同时发生数据库查询 ——Django 将保存查询的结果到查询集(非简单查询的查询结果,简单查询往下看。)...例如,重复获取查询集对象中一个特定的索引将每次都查询数据库: >>> queryset = Entry.objects.all() >>> print queryset[5] # Queries the...queryset] >>> bool(queryset) >>> entry in queryset >>> list(queryset) 注意:简单地打印查询集不会填充缓存。