首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django的Manager和QuerySet

people = models.Manager() # 自定义名为people的管理器 使用这个实例模型时, Person.objects 会产生一个 AttributeError 异常, Person.people.all...有关如何自定义Manager,在Django管理器中有详细说明。 QuerySet 一个 QuerySet 代表来自数据库中对象的一个集合。它可以有 0 个,1 个或者多个 filters。...在 SQL 的层面上, QuerySet 对应 SELECT 语句,filters对应类似 WHERE 或 LIMIT 的限制子句。...需要注意的是Managers 只能通过模型类访问,不是通过模型实例,目的是强制分离 “表级” 操作和 “行级” 操作。 什么时候QuerySet被执行?...因此,通常我们在返回JsonResponse的时候,需要list()函数来强制QuerySet做数据库操作。 细节 1.

1.1K30

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

然而,如果你想将objects用于字段名称,或者你想使用其它名称不是objects访问管理器,你可以在每个模型类中重命名它。...在这种情况下,使用 模型方法 比使用自定义管理器方法要更好。) 自定义管理器 方法可以返回你想要的任何数据,不只是查询集。...默认管理器 如果你使用自定义 管理器对象,要注意 Django 中的第一个 管理器 (按照模型中出现的顺序而定) 拥有特殊的地位。...下面就是 Django 如何处理自定义管理器模型继承(model inheritance)的: 定义在非抽象基类中的管理器是 不会 被子类继承的。...在整个这一节中,我们将那种由 Django 为你创建的管理器称之为 “自动管理器”,既有因为没有管理器Django 自动添加的默认管理器, 也包括在访问关联模型使用的临时管理器

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

django 1.8 官方文档翻译: 2-6-4 数据库访问优化

合理使用字段类型。 我们假设你已经完成了上面这些显而易见的事情。这篇文档剩下的部分,着重于讲解如何以不做无用功的方式使用Django。...在数据库中不是Python中做数据库的工作 比如: 在最基础的层面上,使用过滤器和反向过滤器对数据库进行过滤。 使用F 表达式在相同模型中基于其他字段进行过滤。 使用数据库中的注解和聚合。...如果这些还不够强大: 使用原始的SQL 编写你自己的自定义SQL语句,来获取数据或者填充模型。...不要获取你不需要的东西 使用QuerySet.values()和values_list() 当你仅仅想要一个带有值的字典或者列表,并不需要使用ORM模型对象时,可以适当使用values()。...使用QuerySet.update()和delete() 通过QuerySet.update()使用批量的SQL UPDATE语句,不是获取大量对象,设置一些值再单独保存。

1.1K30

Django】 开发:数据库操作和后台管理

查询数据 数据库的查询需要使用管理器对象进行 通过 MyModel.objects 管理器方法调用查询接口 方法 说明 all() 查询全部记录,返回QuerySet查询对象 get() 查询符合条件的单一记录...(元组表示) 方法:values_list (‘列 1’,‘列 2’) 用法:MyModel.objects.values_list (…) 作用: 返回元组形式的查询结果 返回值: QuerySet...='机械工业出版社')) 原生的数据库操作方法 使用MyModel.objects.raw()进行 数据库查询操作查询 在django中,可以使用模型管理器的raw方法来执行select语句进行数据查询...类型的记录,不便于阅读和判断 在用户自定义模型类中可以重写 方法解决显示问题,如: 在 自定义模型类中重写 str(self) 方法返回显示文字内容: class Book(models.Model...说明: 后台管理器类须继承自 django.contrib.admin 里的 ModelAdmin 类 模型管理器使用方法: 在 /admin.py 里定义模型管理器类 class XXXXManager

4K40

查询集 QuerySet管理器Mana

查询集 QuerySet 查询集,也称查询结果集、QuerySet,表示数据库中获取的对象集合。...当调用如下过滤器方法时,Django返回查询集(不是简单的列表): all():返回所有数据。 filter():返回满足条件的数据。 exclude():返回满足条件之外的数据。...对查询集可以再次调用过滤器进行过滤,如 BookInfo.objects.filter(bread__gt=30).order_by('bpub_date') SQL的角度讲,查询集与select语句等价...,第一次使用时会发生数据库的查询,然后Django会把结果缓存下来,再次使用这个查询集时会使用缓存的数据,减少了数据库的查询次数。...qs = BookInfo.objects.all()[0:2] 管理器manager 自定义manager 注意:一旦为模型类指明自定义的过滤器后,Django不再生成默认管理对象objects。

1K40

django 1.8 官方文档翻译: 2-5-2 进行原始的sql查询

django提供两种方法使用原始sql进行查询:一种是使用Manager.raw()方法,进行原始查询并返回模型实例;另一种是完全避开模型层,直接执行自定义sql语句。...警告 传递给raw()方法的sql语句并没有任何检查。django默认它会返回一个数据集,但这不是强制性的。如果查询的结果不是数据集,则会产生一个错误。...通常,Python DB API会返回不带字段的结果,这意味着你需要以一个列表结束,不是一个字典。...如果你不熟悉Python DB-API,注意cursor.execute()中的sql语句使用占位符“%s”,不是直接在sql中添加参数。如果你使用它,下面的数据库会在必要时自动转义你的参数。...也要注意Django使用“%s”占位符,不是SQLite Python绑定的“?”占位符。这是一致性和可用性的缘故。 Django 1.7中的改变。

90420

Django-官网查询部分翻译(1.11版本文档)-QuerySet-字段查找-06

Making queries 进行查询 一旦你创建了 数据表模型类,django 会自动给你一些数据库抽象API,让你可以创建、查询、更新、删除对象,下文将介绍如何使用这些API(以一个网页应用为例展开...Retrieving objects 查出对象(QuerySet数据库中查询对象,通过 表模型类的 Manager 管理器 来构造一个 QuerySet 。...." --> Manager 不能通过 Blog 实例来访问 注意: Managers 只能通过表模型类来访问,不是模型类的实例(对象) 请你一定要分清楚你当前使用的是 表层面 的操作还是 记录层面...QuerySet 对象的方法 下面这些 QuerySet 方法会直接触发数据库操作然后返回一些其他东西,不是 QuerySet 这些方法不会使用 cache 缓存,相反,每次调用他们都会执行数据库操作...用 django模型类创建的表会自动加上 app 的前缀(显然这里的 app 叫 blog) lookuptype 查找类型分类整理 此部分为伪代码,仅演示这些字段查询的功能用法以及对应 SQL

2.9K20

翻译了Django1.4数据库访问优化部分

此时并未执行数据库查询 print news_list # 用时方执行查询操作 何时它们被执行. # 用时方执行查询操作 print news_list 数据如何被缓存 # 这样的QuerySet...在同一模型使用不同字段进行对比过滤 # 查询所有title和sub_title相同的数据 queryset = News.objects.filter(title=F('sub_title')) 使用...,返回list或者dict时,使用 values news_list = News.objects.values('title').filter(channel__id=1) print news_list...QuerySet.delete() 批量操作不会调用类中定义的 save() 或 delete() 方法 直接使用外键的值 获取频道ID: news.channel_id 不是: news.channel.id...批量插入 用 django.db.models.query.QuerySet.bulk_create() 批量创建对象,减少SQL查询的 数量。

62110

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

,那么你之前用sql语句写的数据库操作,那么就需要将sql语句全部修改,但是如果你用orm,就不需要担心这个问题,不管是你mysql变更到oracle还是oracle更换到mysql,你如果用的是orm...一个正则表达式, 作为一个字符串, FilePathField 将使用它过滤文件名. 注意这个正则表达式只会应用到 base filename 不是 路径全名....这三个参数可以同时使用. match 仅应用于 base filename, 不是路径全名....queryset类型的数据来调用,如果QuerySet包含数据,就返回True,否则返回False                空的queryset类型数据也有布尔值True和False,但是一般不用它来判断数据库里面是不是有数据...values和values_list得到的queryset类型的数据来调用,返回结果中剔除重复纪录 queryset方法大全: ####################################

2.9K10

后端框架学习-Django

__方法,自定义QuerySet中的输出格式,则输出时能输出格式化字符串。...Django 同样支持方法的串联,以下方法在返回QuerySet后均可使用方法串联,且最终都会按照SQL顺序对数据库进行操作。 print(QuerySet.query)将取得实际的SQL语句。...SQL注入问题: 使用原生语句,使用拼接参数的方式进行查询能适当避免SQL注入问题。...这告诉浏览器该文档是CSV文件,不是HTML文件 响应为额外添加一个Content-Disposition标头,其中包含CSV文件的名称,它将被浏览器用于开启”另存为”对话框。...: 在settings里自定义属性,在调用send_mail位置 from django.conf import settings recipient_list = settings.自定义属性 项目部署

9.3K40

Django 2.0 新特性 转

以前版本的django.conf.urls.url()方法变成了django.urls.re_path(),但为了向后兼容,旧的依然保留,不是立刻废弃。...django.conf.urls.include()方法现在可以django.urls导入,也就是你可以使用from django.urls import include, path, re_path...TEMPLATES中的多个DjangoTemplates引擎中的第一个,不是弹出ImproperlyConfigured错误; 自定义模版标签现在接收强制关键字参数; Tests测试 为LiveServerTestCase...改写为: models.Index(fields=['headline', '-pub_date'], name='index_name') 6. call_command()将验证它接收的选项 对于使用选项不是使用...SQLite现在支持外键约束 另外,Django2.0还废弃和移除了一些方法和属性。 总结: 好像也没多大变化,不是重度使用者,基本感受不出变化来,该怎么用还是怎么用,^-^!

2.6K20

Django学习笔记之Queryset详解

QuerySet实例,QuerySet是一个可遍历结构,包含一个或多个元素,每个元素都是一个Model 实例,它里面的方法也是表级方法,前面说了,Django给我们提供了增加表级方法的途径,那就是自定义...manager类,不是自定义QuerySet类,一般的我们没有自定义QuerySet类的必要;django.db.models模块中的Model类,我们定义表的model时,就是继承它,它的功能很强大...、改、查时都是可以用的,如order by、 like、in、join、union、and、or、not等等,我们以查询为例,说一下django如何映射SQL的这些关键字的(查、删、改中这些关键字的使用方法基本相同...values_list()跟values()相似,它返回的是一个ValuesListQuerySet,也类型于一个列表,不过它的元素不是字典,而是元组。...如果只想知道一个QuerySet有多大,不想获取QuerySet中的每个元素,那就用count();如果已经数据库获取到了QuerySet,那就用len() 2.4.12  contains/startswith

2.7K30

Django模型model

: 根据对象的类型生成数据库表结构 将对象、列表的操作,转换为sql语句 将sql查询到的结果转换为对象、列表 Django中的模型包含存储数据的字段和约束,对应着数据库中唯一的表 ORM.png 2....模型类的管理器 objects:是Manager类型的对象,用于与数据库进行交互 当定义模型类时没有指定管理器,则Django会为模型类提供一个名为objects的管理器 支持明确指定模型类的管理器...Django模型进行数据库的查询操作的接口,Django应用的每个模型都拥有至少一个管理器 自定义管理器类主要用于两种情况 向管理器类中添加额外的方法创建管理器对象保存数据到数据库 class TestInfoManager...,推荐使用下面的两种之式 说明: init 方法已经在基类models.Model中使用,在自定义模型中无法使用模型类中增加一个类方法保存数据到数据库 class BookInfo(models.Model...模型类的查询 查询集表示数据库中获取的对象集合 查询集可以含有零个、一个或多个过滤器 过滤器基于所给的参数限制查询的结果 Sql的角度,查询集和select语句等价,过滤器像where和limit子句

11510

DjangoDjango ORM 学习笔记

通过使用 ORM,我们只需要操作 Author 和 Blog 对象,不用操作相关的数据库表。这里主要介绍一下 Django ORM 的相关使用。...优缺点 使用 ORM 最大的优点就是快速开发,让我们将更多的精力放在业务上不是数据库上,下面是 ORM 的几个优点 隐藏了数据访问细节,使通用数据库交互变得简单易行。...对象和关系之间并不是完美映射 一般来说 ORM 足以满足我们的需求,如果对性能要求特别高或者查询十分复杂,可以考虑使用原生 SQL 和 ORM 共用的方式 Django ORM 在 Django 框架中集成了...使用 Python 的切片语法可以限制 QuerySet 的实例数量,ORM 会将翻译成 SQL 的 LIMIT 和 OFFSET 子句,下面是几个例子: 放回 QuerySet 的前 5 个元素 返回...values 会返回一个 dict 数组, values_list返回 list 数组。

2.2K20
领券