在平时的开发过程中,避免不了需要获取 Model 中的字段列表。 那需要把所有字段都再复制一份吗?这样的话就太麻烦了,而且后期也不好维护。...: password>, django.db.models.fields.DateTimeField: last_login>, django.db.models.fields.BooleanField...>, django.db.models.fields.CharField: last_name>, django.db.models.fields.EmailField: email>, django.db.models.fields.BooleanField...: is_staff>, django.db.models.fields.BooleanField: is_active>, django.db.models.fields.DateTimeField...这个结果并不是我们想要的,我们需要的是字段名称列表。只需要对每个 field 字段取 name 属性就可以了。 >>> [field.name for field in User.
Django源码学习-10-Minin 基础类 ?...所有的视图相关代码,均存放在 django/views/generic 目录中: from django.views.generic import View ?...用于取代date_based.py; detail.py 基于类的单个对象显示相关的视图和工具类; edit.py 基于类的对象编辑相关的视图和工具类; list.py 基于类的对象列表显示相关视图和工具类...表示没有数据时显示空列表;否则将会产生一个404错误。 queryset 产生数据的queryset实例或"类queryset"数据列表。 model 关联的模型类。...方法 get_queryset 获取用于数据显示的列表对象。可以是类queryset对象。 queryset属性。未提供queryset属性时,返回model的默认管理器。
常用通用视图ListAPIView:获取列表数据(GET)CreateAPIView:创建数据(POST)RetrieveAPIView:获取单个数据(GET)UpdateAPIView:更新数据(PUT...运行Django项目python manage.py runserver 0.0.0.0:8000打开浏览器登录访问:http://127.0.0.1:8000/api/books/get:查询列表post...数据查询相关方法get_queryset(self):返回视图使用的查询集,是获取数据的主要入口。...paginate_queryset(self, queryset):对查询集进行分页处理,返回页面对象或 None(若未配置分页)。...get_paginated_response(self, data):返回分页格式的响应对象,配合分页功能使用。您正在阅读的是《Django从入门到实战》专栏!关注不迷路~
对象,类似list,可以通过索引来获取列表中的对象,这里不支持负索引 from django.shortcuts import render,HttpResponse from app01 import...,如果符合筛选条件的对象超过了一个或者没有一个都会抛出错误 区别filter()如果获取不到符合条件的数据,返回一个空对象,不报错 from django.shortcuts import render...获取所有title return HttpResponse('数据查询成功') values和values_list区别 values查询返回的结果是列表套字典的形式,字段名和数据都能够获取到...values_list查询返回的结果是列表套元组的形式,只返回数据 distinct 去重 distinct() 方法用于对数据进行去重,返回的是 QuerySet 类型数据 注意: 对模型类的对象去重没有意义...的行为,也就是删除一个对象时也会删除与它相关联的外键对象; delete() 方法是 QuerySet 数据类型的方法,但并不适用于 Manager 本身。
django中配置mysql数据库 查询queryset时如果需要选取查询集中的某个子集的字段时, 应该用切片,或者first 选择某个子集对象,这样才能够使用到 子集的字段,直接queryset后选择字段会直接报错...一是在INSTALLED_APPS里面加入app名称; 二是配置数据库相关信息 View Code 定义数据库表结构 models.py 使用orm框架,不需要编写原生的sql语句 from django.db...Person(tname='老陈',gender='female')]) [, ] # 批量添加 查询数据 all 获取所有对象列表...列表里的元素是字典,而不是queryset对象列表。...每个字典代表一个对象 values_list 列表里面的元素是元祖 >>> Student.objects.values() QuerySet [{'id': 13, 'sname': '小南',
如要获取QuerySet中最后五个元素,可以这样做: my_queryset.reverse()[:5] 这与Python直接使用负索引有点不一样。 Django不支持负索引,只能曲线救国。...,为datetime.datetime对象的列表,表示QuerySet内容中特定种类的所有可用日期。...通常用于获取全部QuerySet对象。...() 获取包含对象的迭代器 latest() 获取最近的对象 earliest() 获取最早的对象 first() 获取第一个对象 last() 获取最后一个对象 aggregate...7. in_bulk() in_bulk(id_list=None) 获取主键值的列表,并返回将每个主键值映射到具有给定ID的对象的实例的字典。
在前面教程中小编我已经介绍了Django的Queryset特性及高级使用技巧以及Queryset的aggregate和annotate方法。...for循环每运行一次,django都要对数据库进行一次查询,造成了极大的资源浪费。为什么我们不能再第一次获取文章列表的同时就获取每篇文章相关联的category和tags对象信息呢?...现在我们对article_list视图函数稍微进行修改,加入select_related方法,在查询文章列表时同时一次性获取相关联的category对象信息,这样在模板中调用 {{ article.category.name...# 获取id=13的文章对象同时,获取其相关category和相关作者名字信息。...# 获取文章列表及每篇文章相关的名字以P开头的tags对象信息 Article.objects.all().prefetch_related( Prefetch(‘tags’, queryset=Tag.objects.filter
获取对象 通过模型中的Manager构造一个QuertSet,来从你的数据库中获取对象。 QuerySet表示你数据库中取出来的一个对象的集合。...获取所有对象 获取一个表中所有对象的最简单的方式是全部获取。...在 Django 删除对象时,会模仿 SQL 约束 ON DELETE CASCADE 的行为,换句话说,删除一个对象时也会删除与它相关联的外键对象。...Django 也提供反向获取关联对象的 API,就是由从被关联的对象得到其定义关系的主对象。...例如,一个 Blog 类的实例 b 对象通过 entry_set 属性得到所有相关联的 Entry 对象列表: b.entry_set.all()。
表示对象列表的一个页面. 执行这个视图的时候,self.object_list将包含视图正在操作的对象列表(通常是一个查询集,但不是必须)....属性: model: 指定模型 tempalta_name:模板文件 queryset:指定一个经过过滤的对象列表,将取代model提供的值 context_object_name: 指定要在上下文中使用的变量的名称...方法: get_queryset():获取此视图的对象列表.必须是可迭代或者可以使查询集.默认返回queryset属性.可以通过重写该方法实现动态过滤.让这种方式能够工作的关键点,在于当类视图被调用时...方法: get_queryset():返回用来获取本视图显示对象的queryset.如果设置了queryset属性,get_queryset()默认返回它的值. get_object(queryset=...(): get_queryset(): *get_context_data(**kwargs):* delete(request, args, **kwargs):*在获取到的对象上调用delete()
>]> 结果是一个QuerySet 。...稍后我们将了解更多相关信息。基本上,它是来自数据库的对象列表。我们可以看到我们有两个对象,但是我们只能读取Board object 。那是因为我们还没有 __str__在Board 模型中定义方法。...我们可以将这个QuerySet 视为一个列表。...如果我们尝试获取不存在的对象,例如带有 的板 id=3,则会引发异常: board = Board.objects.get(id=3) boards.models.DoesNotExist: Board...列出所有对象 Board.objects.all() 获取单个对象,由字段标识 Board.objects.get(id=1) 在下一节中,我们将开始编写视图并在 HTML 页面中显示我们的板。
字符串相关 字符串基础 字符串历来是各种编程语言坑最多的地方(个人认为),不同软件语言在字符串上的操作的差别比软件语言和硬件描述语言的差距都大(一样是个人认为) JavaScript的字符串在描述上与...Python类似,使用""和''标识,多行字符串使用``标识,同样,字符串是不可变对象,即一旦确定就不可改变 字符串操作 需要强调的是,字符串操作均是返回一个新的字符串,原字符串并不会改变 获取指定位置字符...列表基础 JavaScript的列表与Python的列表相似,应该大部分动态语言的列表都是这个样子:索引自由,切片自由,不绑定数据类型。...与Python不同的是JavaScript列表更加“自由”: 可以直接修改列表的length属性修改列表长度,不足位用undefined补齐 大多数其他编程语言不允许直接改变数组的大小,越界访问索引会报错...对象概述 JavaScript的对象是一种无序的集合数据类型,它由若干键值对组成。
’> >>> a = UserEx.objects.all() >>> type(a) django.db.models.query.QuerySet’> QuerySet是延迟获取的...另外,查询到的QuerySet又是缓存的,当再次使用同一个QuerySet时,并不会再查询数据库,而是直接从缓存获取(不过,有一些特殊情况)。...from django.db import connection l = connection.queries #l是一个列表,记录SQL语句 a = Entry.objects.all() for...当我们不用Author instance的方法,且只想返回几个字段时,就要用values(),它返回的是一个ValuesQuerySet对象,它类似于一个列表,不过,它的每个元素是字典。...如果只想知道一个QuerySet有多大,而不想获取QuerySet中的每个元素,那就用count();如果已经从数据库获取到了QuerySet,那就用len() 2.4.12 contains/startswith
Django通过通用视图来完成下面一些功能: 为单一的对象展示列表和一个详细页面。...因为这是如此常见 的任务,Django提供了一大把内置的通用视图,使生成对象的展示列表和详细视图 的变得极其容易。 让我们来看一下这些通用视图中的”对象列表”视图。...当你处理 一个object或者queryset时,Django能够使用你定义对象显示用的自述名(verbose name,或者复数的自述名,对于对象列表)来填充上下文(context)。...然而,model参数并不是唯一能够指明视图要基于哪个对象进行操作的方法 – 你同样可以使用queryset参数来指定一个对象列表: from django.views.generic import DetailView...然而,通过使用queryset来定义一个过滤的对象列表,你可以更加详细 的了解哪些对象将会被显示的视图中(参见执行查询来获取更多关于查询集对象的更对信息,以及参见 基于类的视图参考来获取全部 细节)。
1 前言 当我们建立好数据模型,Django 会自动为我们生成一套数据库接口相关的接口。这套接口称为 QuerySet API。为什么叫 QuerySet ?...所以我们在Python 中处理 Unicode 对象的时候,你可以直接将它们混合使用和互相匹配而不必去考虑编码细节。 2 创建对象 为了更加直观的操作数据库,我使用 Django 的 API 来讲解。...如果模型中存在有一对多,多对一,多对多的关系,先把相关的对象查询出来或者创建出来,才能创建该模型。例如我们要创建 Book 对象,首先要创建 Author 和 Publisher 对象。...6 QuerySet 用法 前面讲到,使用 all(),filter() 查询多条数据,返回的结果是一个 QuerySet 对象。它不是个列表,但是可以使用 list() 将其转变为列表。...Publisher.objects.all().reverse()[:2] 如果还要获取 QuerySet 里面存放对象的个数,可以使用 count() 函数来查询数量。
的操作(只有表层面才有Manager) Retrieving all objects 查出所有对象 最简单的方式从表里获取全部记录对象(QuerySet)是在 Manager 上调用 .all()...() 来更高效的获取数据条数 用 list() 把 QuerySet 强制转换成 list 时 强转成 bool 类型或者 作为 if 条件 时 如果 QuerySet 的查询结果至少有一个(数据对象...,你可以用 表模型类的 Manager 对象来调用 .get() 方法,往里面传入查询条件来直接获取到数据对象。...,并附带字段,后期对象 .字段 不会再触发数据库操作 .prefetch_related(*lookups) 优化相关 .defer(*fields) 优化相关 .only(*fields) 优化相关...WHERE id IN (1, 3, 4); # 补充:也可以使用会动态的查询 QuerySet 作为列表 inner_qs = Blog.objects.filter(name__contains=
(惰性,,没有操作数据库)表示数据库中对象的集合,等同于select 语句 query 获取mysql 语句 first() 获取第一条,返回对象 last() 获取最后一条,返回对象 get...(**kwargs) 根据给定的条件获取一个对象,如果有多个对象符合则报错 all() 获取所有记录 filter(**kwargs) 根据给定的条件获取过滤后的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) 根据给定的字段来排序
Django的Manager和QuerySet 要从数据库检索对象,需要通过模型类的 Manager 构建一个 QuerySet。...自定义名为people的管理器 使用这个实例模型时, Person.objects 会产生一个 AttributeError 异常,而 Person.people.all() 会返回包含所有 Person 对象的列表...如前所述,你能通过模型的 Manager 获取 QuerySet。每个模型至少有一个 Manager,默认名称是 objects。...之所以能够实现这样的操作,那是因为上述的方法本身返回的对象依旧是QuerySet对象,而非其它。...下面介绍一下常用的可以返回QuerySet对象的QuerySet方法 不能返回QuerySet对象的QuerySet方法 下面介绍一些常用的不能返回QuerySet对象的QuerySet方法。
聚合 Django数据库抽象API描述了使用Django查询来添加、删除、查询和修改单个对象的方法。然而,有时需要根据一组对象聚合您想要获得的值。...可以在QuerySet引用中找到可用聚合函数的列表。 Aggregate()是QuerySet的一个结束语句。...在聚合函数中指定聚合字段时,Django允许您在筛选相关字段时使用相同的双下划线符号。Django将处理需要检索和聚合相关值的任何表连接。...应用于公共模型字段的任何过滤器()(或exclude())都将具有约束被认为是聚合的对象的效果。 当使用annotate()子句时,过滤器具有约束注释对象计算的效果。...例如,可以使用查询生成所有书籍的注释列表。此列表的标题以“Django”开头。
count(): 返回数据库中匹配查询(QuerySet)的对象数量。...如果QuerySet包含数据,就返回True,否则返回False 返回QuerySet对象的方法有 all() filter() exclude() order_by() reverse() distinct...(*author_objs) 添加id >>> models.Book.objects.first().authors.add(*[1, 2]) set() ()可填列表与对象列表 更新model...')) Django 支持 F() 对象之间以及 F() 对象和常数之间的加减乘除和取模的操作。...def get(self, *args, **kwargs): # 获取单个对象 def create(self, **kwargs): # 创建对象 def bulk_create