首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

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

在这种情况下,使用 模型方法 比使用自定义的管理器方法要更好。) 自定义的管理器 方法可以返回你想要的任何数据,而不只是查询。...修改管理器初始的查询 管理器自带的 查询返回系统中所有的对象。...调用自定义查询 虽然大多数标准查询的方法可以从管理器中直接访问到,但是这是一个例子,访问了定义在自定义 查询上的额外方法,如果你也在管理器上面实现了它们: class PersonQuerySet...创建管理器 * django 1.7 中新增 * 对于上面的例子,同一个方法需要在查询 和 管理器上创建两份副本,作为替代,QuerySet.as_manager()可以创建一个管理器的实例,它拥有自定义查询的方法...你可以调用Manager.from_queryset(),它会返回管理器的一个子类,带有自定义查询所有方法的副本: class BaseManager(models.Manager): def

95520

Django 2.1.7 模型管理器 models.Manager 以及 元选项

如果想要将这个对象修改为其他名称,那么可以用models.Manager()来自定义创建对象,如下: # 全国区域信息 class AREA(models.Model): .......area_obj = models.Manager() # 自定义模型管理对象 class Meta: db_table = 'AREA' # 设置表名为 AREA 使用自定义的模型管理类对象来进行查询如下...将某些固定的查询写到模型管理类中,避免重复编写。 自定义管理器类主要用于两种情况: 1.修改原始查询,重写all()方法 2.向管理器类中添加额外的方法,如向数据库中插入数据。...1.修改原始查询,重写all()方法。...## 自定义中间件的模型管理类 class MiddlewareInfoManager(models.Manager): def create_middleware(self,name,port

54120

Django 2.1.7 模型管理器 models.Manager 以及 元选项

如果想要将这个对象修改为其他名称,那么可以用models.Manager()来自定义创建对象,如下: # 全国区域信息 class AREA(models.Model): .......area_obj = models.Manager() # 自定义模型管理对象 class Meta: db_table = 'AREA' # 设置表名为 AREA 使用自定义的模型管理类对象来进行查询如下...将某些固定的查询写到模型管理类中,避免重复编写。 自定义管理器类主要用于两种情况: 1.修改原始查询,重写all()方法 2.向管理器类中添加额外的方法,如向数据库中插入数据。...1.修改原始查询,重写all()方法。...## 自定义中间件的模型管理类 class MiddlewareInfoManager(models.Manager): def create_middleware(self,name,port

94440

django的模型类管理器——数据库操作的封装详解

管理器是Django的模型进行数据库操作的接口,Django应用的每个模型都拥有至少一个管理器。Django支持自定义管理器类,继承自models.Manager。...自定义管理器类主要用于两种情况: 1.修改原始查询,重写all()方法 2.向管理器类中添加额外的方法,如向数据库中插入数据。 1.修改原始查询,重写all()方法。...自定义管理器类的应用场景 1.改变查询的结果。 比如调用BookInfo.books.all()返回的是没有删除的图书的数据。 2.添加额外的方法。...models.Manager): """图书模型管理器类""" # 改变查询的结果 def all(self): # 1.调用父类的all,获取所有数据 books = super()....2.为模型类添加额外的方法,使其通过模型类.方法名就可以插入保存数据 class BookInfoManager(models.Manager): """图书模型管理器类""" # 改变查询的结果

1.3K10

django 源码改写笔记

一、admin 的 save_model 改写 我们后台项目有用到 django的 admin 后台模块,有些配置的功能完全可以通过 django 就可以实现,不用前端再开发管理页面了,但是有些操作需要自定义的...二、自定义 model 模型的查询。 例如,我们原先有个模型 Customer ,之前所有关于 Customer 的查询用的都是 Customer.objects.all() 。...但是最近我们有个需求,要给 Customer 加个字段是否为微信默认用户,这样的话,原先关于 Cusomer 查询都要加个过滤条件,这样以前写的关于 Customer 查询的语句代码都要改,要修改很多地方...AllCustomerManager(models.Manager): # 改变查询的结果 def all(self): # 1.调用父类的all, 获取所有数据...返回的books是QuerySet集合,还可以继续使用所有查询 return customers class CustomerManager(models.Manager):

49920

Django 2.1.7 查询 QuerySet

上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的介绍F对象、Q对象、聚合查询等功能。...其中查询具有缓存、返回多个值、返回单个值、对查询切片处理等功能。...缓存:使用同一个查询,第一次使用时会发生数据库的查询,然后把结果缓存下来,再次使用这个查询时会使用缓存的数据。 查询的缓存 每个查询都包含一个缓存来最小化对数据库的访问。...在新建的查询集中,缓存为空,首次对查询求值时,会发生数据库查询django会将查询的结果存在查询的缓存中,并返回请求的结果,接下来对查询求值将重用缓存中的结果。...对查询进行切片后返回一个新的查询,不会立即执行查询

1.1K10

Django模型model

class BookInfo(models.Model): books = models.Manager() 当为模型类指定管理器后,django不再为模型类生成名为objects的默认管理器 管理器是...Django的模型进行数据库的查询操作的接口,Django应用的每个模型都拥有至少一个管理器 自定义管理器类主要用于两种情况 向管理器类中添加额外的方法创建管理器对象保存数据到数据库 class TestInfoManager...模型类的查询 查询表示从数据库中获取的对象集合 查询可以含有零个、一个或多个过滤器 过滤器基于所给的参数限制查询的结果 从Sql的角度,查询和select语句等价,过滤器像where和limit子句...接下来主要讨论如下知识点 查询 字段查询:比较运算符,F对象,Q对象(1)模型类查询集合 在管理器上调用过滤器方法会返回查询 查询经过过滤器筛选后返回新的查询,因此可以写成链式过滤 惰性执行:...first():返回第一个对象 last():返回最后一个对象 exists():判断查询集中是否有数据,如果有则返回True 限制查询,如果获取一个对象,直接使用[0] 模型查询的缓存 这构成了两个查询

11310

Django的Manager和QuerySet

要为指定类重命名 Manager,在该模型中定义一个类型为 models.Manager 的属性。...people = models.Manager() # 自定义名为people的管理器 使用这个实例模型时, Person.objects 会产生一个 AttributeError 异常,而 Person.people.all...一般而言,我们是不需要自定义manager的。除非以下两种情况: 添加额外的 Manager 方法; 修改 Manager 返回的原始 QuerySet。...有关如何自定义Manager,在Django管理器中有详细说明。 QuerySet 一个 QuerySet 代表来自数据库中对象的一个集合。它可以有 0 个,1 个或者多个 filters。...字段查找 由于字段查询非常多,也非常常用,本文不进行说明。请直接参考Django字段查询 参考资料: 执行查询 QuerySet API参考 管理器

1.1K30

Django 模型中自定义Manager和模型方法

1.自定义管理器(Manager) 在语句Book.objects.all()中,objects是一个特殊的属性,通过它来查询数据库,它就是模型的一个Manager....现在我们可以进行下面的操作: >>> Books.objects.title_count('django') #这是我们自定义的manager中的查询方法 2 >>> Books.objects.filter...(title__icontains='django').count() # 默认的查询方法依然可用 2 这样我们可以将经常使用的查询进行封装,就不必重复写代码了....objects = models.Manager() # 默认Manager dahl_objects = DahlBookManager() # 自定义的特殊Manager 在这个示例模型中...Model.clean() 应用这个方法来提供自定义的模型验证,以及修改模型的属性.例如,你可以使用它来给一个字段自动提供值,或者用于多个字段需要一起验证的情形: import detetime from

2.7K20

Django—模型

在新建的查询集中,缓存为空,首次对查询求值时,会发生数据库查询django会将查询的结果存在查询的缓存中,并返回请求的结果,接下来对查询求值将重用缓存中的结果。...当没有为模型类定义管理器时,Django会为每一个模型类生成一个名为objects的管理器,自定义管理器后,Django不再生成默认管理器objects。...books = models.Manager()  管理器Manager   管理器是Django的模型进行数据库操作的接口,Django应用的每个模型类都拥有至少一个管理器。...Django支持自定义管理器类,继承自models.Manager。...自定义管理器类主要用于两种情况: 1.修改原始查询,重写all()方法 2.向管理器类中添加额外的方法,如向数据库中插入数据。 1.修改原始查询,重写all()方法。

6.1K21

Django 模型成员2.2

books = models.Manager() 当为模型类指定管理器后,django不再为模型类生成名为objects的默认管理器 管理器Manager 管理器是Django的模型进行数据库的查询操作的接口...,Django应用的每个模型都拥有至少一个管理器 自定义管理器类主要用于两种情况 情况一:向管理器类中添加额外的方法:见下面“创建对象”中的方式二 情况二:修改管理器返回的原始查询:重写get_queryset...,推荐使用下面的两种之式 说明: _init _方法已经在基类models.Model中使用,在自定义模型中无法使用, 方式一:在模型类中增加一个类方法 class BookInfo(models.Model...引入时间包:from datetime import * 调用:book=BookInfo.create("hello",datetime(1980,10,11)); 保存:book.save() 方式二:在自定义管理器中添加一个方法...BookInfoManager() 调用:book=Book.books.create_book("abc",datetime(1980,1,1)) 查看:book.pk 实例的属性 DoesNotExist:在进行单个查询

50940

django 序列化自定义字段

serializers.ModelSerializer 序列化返回数据之前对字段进行自定义然后返回数据 # 序列化所有的字段 class V1s(serializers.ModelSerializer...): # 这里是要进行自定义字段,数据库中有个m3u8字段,这里定义字段的时候一定要和数据库的字段名字是一样的 m3u8=serializers.SerializerMethodField()...class Meta: model = models.Movies fields = '__all__' # 自定义字段,用get_字段名字的方式获取到字段...,然后对字段进行处理 def get_m3u8(self, obj): # 这里的obj值得就是字段对象 它是一个queryset a = obj.m3u8 b...# 这里是没有进行自定义字段处理的序列化器,因为有all存在,默认返回数据库中所有字段 class V2s(serializers.ModelSerializer): m3u8=serializers.SerializerMethodField

1.4K30

Django 2.1.7 查询 QuerySet

上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的介绍F对象、Q对象、聚合查询等功能。...其中查询具有缓存、返回多个值、返回单个值、对查询切片处理等功能。...缓存:使用同一个查询,第一次使用时会发生数据库的查询,然后把结果缓存下来,再次使用这个查询时会使用缓存的数据。 查询的缓存 每个查询都包含一个缓存来最小化对数据库的访问。...在新建的查询集中,缓存为空,首次对查询求值时,会发生数据库查询django会将查询的结果存在查询的缓存中,并返回请求的结果,接下来对查询求值将重用缓存中的结果。...” 对查询进行切片后返回一个新的查询,不会立即执行查询

74420

查询 QuerySet和管理器Mana

查询 QuerySet 查询,也称查询结果、QuerySet,表示从数据库中获取的对象集合。...当调用如下过滤器方法时,Django会返回查询(而不是简单的列表): all():返回所有数据。 filter():返回满足条件的数据。 exclude():返回满足条件之外的数据。...() 继续执行遍历迭代操作后,才真正的进行了数据库的查询 for book in qs: print(book.btitle) 2>缓存 使用同一个查询,第一次使用时会发生数据库的查询,然后Django...qs = BookInfo.objects.all()[0:2] 管理器manager 自定义manager 注意:一旦为模型类指明自定义的过滤器后,Django不再生成默认管理对象objects。...1>修改原始查询,重写all()方法。

1K40
领券