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

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

在这种情况下,使用 模型方法 比使用自定义的管理器方法要更好。) 自定义的管理器 方法可以返回你想要的任何数据,而不只是查询集。...get_queryset() 会根据你所需要的属性返回 查询集。...由于 get_queryset() 返回的是一个 查询集 对象,所以你仍可以对它使用 filter(), exclude()和其他 查询集的方法。...在自动管理器实例中编写正确的管理器 在上面的django.contrib.gis 已经提到了, use_for_related_fields这个特性是在需要返回一个自定义查询集子类的管理器中使用的。...如果你重写了 get_queryset() 方法并且过滤掉了一些行数据,Django 将返回不正确的结果。不要这么做!

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

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

    每个Django模型至少有一个manager,你可以创建自定义manager以定制数据库的访问....例如,下面的模型有两个manger--一个返回所有对象,另一个仅返回作者是Roald Dahl的书 from django.db import models #首先,定义一个Manager的子类 class...由于get_queryset()返回一个Queryset对象,所以你可以使用filter(),exclude()和其他所有的Queryset方法....如果你使用自定义的Manager对象,请注意,Django遇到的第一个Manager(以它在模型中被定义的位置为准)会有一个特殊状态。...因为覆盖get_queryset()了,你可能接受到一个无用的返回对像,你必须避免这种情况. 2.自定义模型方法 为了给你的对像添加一个行级功能,那就定义一个自定义方法.鉴于manager经常被用来用一些整表操作

    3.5K20

    Django 模型成员2.2

    books = models.Manager() 当为模型类指定管理器后,django不再为模型类生成名为objects的默认管理器 管理器Manager 管理器是Django的模型进行数据库的查询操作的接口...,Django应用的每个模型都拥有至少一个管理器 自定义管理器类主要用于两种情况 情况一:向管理器类中添加额外的方法:见下面“创建对象”中的方式二 情况二:修改管理器返回的原始查询集:重写get_queryset...()方法 class BookInfoManager(models.Manager): def get_queryset(self): return super(BookInfoManager..., self).get_queryset().filter(isDelete=False) class BookInfo(models.Model): ......,推荐使用下面的两种之式 说明: _init _方法已经在基类models.Model中使用,在自定义模型中无法使用, 方式一:在模型类中增加一个类方法 class BookInfo(models.Model

    76840

    自定义 Django 管理界面中的多对多内联模型

    问题背景在 Django 管理界面中,用户可以使用内联模型来管理一对多的关系。但是,当一对多关系是多对多时,Django 提供的默认内联模型可能并不适合。...解决方案为了解决这个问题,我们可以自定义多对多内联模型的显示方式。具体步骤如下:创建一个新的内联模型类。...这个方法负责返回一个表单集,表单集中的每个表单对应于内联模型中的一个对象。在 get_formset() 方法中,使用 formset_factory() 函数创建表单集。...下面是一个示例代码,演示了如何自定义多对多内联模型的显示方式:from django.contrib import adminfrom django.contrib.admin.utils import...__init__(*args, **kwargs) NestedObjects(self) # 重写 get_queryset() 方法 def get_queryset(self

    1.3K10

    DRF视图详解:从基础视图到通用视图实践指南

    () 方法,可以实现动态过滤查询集,例如只返回当前登录用户的数据:def get_queryset(self): # 只返回当前用户创建的数据 return Student.objects.filter...如果需要支持多字段查询,可以自定义 Mixin 类:from django.shortcuts import get_object_or_404class MultipleFieldLookupMixin...数据查询相关方法get_queryset(self):返回视图使用的查询集,是获取数据的主要入口。...默认返回 queryset 属性定义的查询集,可重写以实现动态过滤(如返回当前用户的数据)def get_queryset(self): return self.request.user.articles.all...get_paginated_response(self, data):返回分页格式的响应对象,配合分页功能使用。您正在阅读的是《Django从入门到实战》专栏!关注不迷路~

    30510

    Django内置的通用类视图及实例

    方法: get_queryset():获取此视图的对象列表.必须是可迭代或者可以使查询集.默认返回queryset属性.可以通过重写该方法实现动态过滤.让这种方式能够工作的关键点,在于当类视图被调用时...get_context_data(**kwargs): 返回显示对象的上下文数据,通过覆盖该方法返回额外的上下文 2.DetailView ?...方法: get_queryset():返回用来获取本视图显示对象的queryset.如果设置了queryset属性,get_queryset()默认返回它的值. get_object(queryset=...None):返回该视图要显示的单个对象.如果提供了queryset,该queryset将作为对象的查询源,否则,将使用get_queryset().get_object()从视图的所有参数中查找pk_url_kwarg...context_object_name = 'employee_detail' #指定获取的模型列表数据保存的变量名。这个变量会被传递给模板。

    4.3K40

    Django内置的通用类视图CBV及示例

    方法: get_queryset():获取此视图的对象列表.必须是可迭代或者可以使查询集.默认返回queryset属性.可以通过重写该方法实现动态过滤.让这种方式能够工作的关键点,在于当类视图被调用时...get_context_data(**kwargs): 返回显示对象的上下文数据,通过覆盖该方法返回额外的上下文 2.DetailView ?...方法: get_queryset():返回用来获取本视图显示对象的queryset.如果设置了queryset属性,get_queryset()默认返回它的值. get_object(queryset=...None):返回该视图要显示的单个对象.如果提供了queryset,该queryset将作为对象的查询源,否则,将使用get_queryset().get_object()从视图的所有参数中查找pk_url_kwarg...context_object_name = 'employee_detail' #指定获取的模型列表数据保存的变量名。这个变量会被传递给模板。

    4.5K10

    使用 Django 的 admin 定制后台,丰富自己网站的后台管理系统

    使用 xadmin Django 自身带有一个功能强大的后台管理系统,这算是 Django 与其他的 Python 的 web 框架相比最大的一个优势吧!...show_content(self, obj): return obj.content[:30] show_content.short_description = '评论内容' 上面的代码定义了一个函数,这个函数返回模型的一个字段的一部分内容...: 重写函数 除了可以重新定义默认的属性,还可以重写管理类的函数,这个很好理解,如下代码我重新定义了一下用户的查看权限: # 限制用户权限,只能看到自己编辑的文章 def get_queryset(self..., request): qs = super(ArticleAdmin, self).get_queryset(request) if request.user.is_superuser...: return qs return qs.filter(author=request.user) 这个函数的意思是获取的模型实例需要判断登录的用户,如果用户是超级管理员就返回所有文章

    4.3K10

    django 1.8 官方文档翻译: 2-5-6 多数据库

    allow_relation(obj1, obj2, **hints) 如果obj1 和obj2 之间应该允许关联则返回True,如果应该防止关联则返回False,如果路由无法判断则返回None。...如果操作应该运行则返回True ,如果不应该运行则返回False,如果路由无法判断则返回None。 位置参数app_label是正在迁移的应用的标签。...例如,你有一个自定义的管理器方法,它访问数据库时候用 ——User.objects.create_user()。...例如,如果你想从get_queryset 方法返回一个自定义的 QuerySet 类,你可以这样做: class MyManager(models.Manager): def get_queryset...它们需要3个自定义的方法: class MultiDBTabularInline(admin.TabularInline): using = 'other' def get_queryset

    2.2K20

    django 源码改写笔记

    一、admin 的 save_model 改写 我们后台项目有用到 django的 admin 后台模块,有些配置的功能完全可以通过 django 就可以实现,不用前端再开发管理页面了,但是有些操作需要自定义的...保存配置后需要调取微信端的接口更新对应的配置,admin暴露出来的接口只是将数据保存到数据库功能,实现保存后调取微信 api 接口就要改写 admin 的源码 save_mode 方法了,代码如下: from django.contrib...返回的books是QuerySet集合,还可以继续使用所有查询 return customers class CustomerManager(models.Manager):...# 改变查询的结果集 def get_queryset(self): return super(CustomerManager, self).get_queryset().filter...objects = CustomerManager() # 自定义一个客户的管理类对象

    68620

    django 入门:通用视图类重构视图

    作者:Kuky_xs 博客:https://www.jianshu.com/p/8cdf099e974f 1 正文 《django入门:环境及项目搭建》 《django入门:数据模型》 《django入门...:视图及模版》 《django入门:Admin管理系统及表单》 终于到最后一部分了,这部分我们将通过 django 自带的通用视图类替换之前写的视图函数,对视图进行重构 2 利用 django 通用视图类创建类视图...template_name = 'blog/home.html' # 指定渲染的模版 context_objects_name = 'post_list' # 对应的模型列表数据保存的变量名...,为模版变量字典,传递给相应的模版 def get_context(self, **kwargs): context = super(PostDetailView, self)....14 print(p.num_pages) # 返回总页数 7 print(p.page_range) # 返回页数的范围 (1, 8) print(p.per_page) # 返回每页列表的数量

    1.3K20
    领券