Django4.0 管理器-默认管理器
Model._default_manager
若你使用自定义 Manager
对象,注意 Django 遇到的第一个 Manager
(按照你在模型中定义的顺序)会拥有一个独特的状态。Django 将类定义中的第一个 Manager
视作 “默认” Manager
,Django 的几个组件(包括 dumpdata
)在用到该模型时会独立地调用该 Manager
。故此,选择默认管理器时要万分小心,避免遇到重写的 get_queryset()
无法获取期望的结果这种情况。
你可以通过 Meta.default_manager_name
指定一个自定义的默认管理器。
若你正在编写的代码必须处理未知模型,例如,在实现了通用视图的第三方应用中使用这个管理器(或 _base_manager
),而不是假定该模型有一个名为 objects
的管理器。