默认情况下,Django 访问关联对象(即 choice.question)时使用 Model._base_manager 管理器类的实例,而不是关联对象的 _default_manager。这是因为 Django 要检索那些可能被默认管理器筛选掉(所以无法访问)的关联对象。

若基本管理器类 (django.db.models.Manager) 无法满足需求,你可以通过设置 Meta.base_manager_name 告诉 Django 使用哪个类。
在关联模型上执行查询时不会使用基础管理器,或者当访问一对多或多对多关系。例如,来自教程的模型 Question 有个 deleted 字段,还有一个基础管理器,用于过滤掉 deleted=True 的实例。由 Choice.objects.filter(question__name__startswith='What') 返回的查询结果集会包含关联至已删除的问题的选项。
该管理器用于访问由其它模型关联过来的对象。这些情况下,Django 要能访问待获取模型的全部对象,这样就能检索出其指向的 任何东西。
因此,你不应该覆盖 get_queryset() 来过滤任何rows。如果你这么做,Django 会返回不完整的结果。
                标题名称:创新互联Django4.0教程:Django4.0管理器-基础管理器
                
                URL标题:http://www.csdahua.cn/qtweb/news29/464279.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网