[英]How django add objects attribute to model classes?
As in the Django documentation 就像Django文档中一样
By default, Django adds a Manager with the name objects to every Django model class
默认情况下,Django将带有名称对象的Manager添加到每个Django模型类中
How does Django add an attribute to model classes? Django如何为模型类添加属性? Whether it is inherited from the
models.Model
or Django
add objects=models.Manager()
dynamically to each model? 是否从
models.Model
或Django
继承,可以向每个模型动态添加objects=models.Manager()
?
It's added dynamically to each model class unless you add one yourself. 它会动态添加到每个模型类中,除非您自己添加一个。
Have a look at ModelBase._prepare
: 看看
ModelBase._prepare
:
def _prepare(cls):
"""Create some methods once self._meta has been populated."""
opts = cls._meta
opts._prepare(cls)
...
if not opts.managers:
if any(f.name == 'objects' for f in opts.fields):
raise ValueError(
"Model %s must specify a custom Manager, because it has a "
"field named 'objects'." % cls.__name__
)
manager = Manager()
manager.auto_created = True
cls.add_to_class('objects', manager)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.