【问题标题】:How django add objects attribute to model classes?django 如何将对象属性添加到模型类?
【发布时间】:2018-09-13 15:33:01
【问题描述】:

在 Django 文档中

默认情况下,Django 会为每个 Django 模型类添加一个名为 objects 的管理器

Django 如何为模型类添加属性? 是继承自models.Model还是Django动态添加objects=models.Manager()到每个模型?

【问题讨论】:

标签: python django django-models django-queryset django-managers


【解决方案1】:

它会动态添加到每个模型类中,除非您自己添加一个。

看看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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2015-08-28
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 2015-11-15
    • 2017-01-12
    相关资源
    最近更新 更多