简体   繁体   English

django如何将对象属性添加到模型类?

[英]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.ModelDjango继承,可以向每个模型动态添加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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM