获取Django中抽象父模型的名称

时间:2017-10-17 18:44:41

标签: python django django-models

假设我有一组Django模型,它们都是抽象Base模型的子类:

from django.db import models

class Base(models.Model):
    created = models.DateTimeField(auto_now_add=True)

    class Meta:
        abstract = True

class Derived1(Base):
    name = models.CharField(max_length=32, null=False, unique=True)
    whatever = models.CharField(max_length=255, null=True, blank=True)

现在我可以像这样得到Derived1的Field对象:

fields=models.Derived1._meta.get_fields()

这为我提供了所有字段,包括继承的“已创建”字段。 一旦我有了这个字段列表,有没有办法看到“创建”字段是从Base继承的?字段对象是否具有任何函数或属性,告诉我定义“已创建”的模型的名称?具体来说,我正在寻找一些函数field.get_model_name_where_defined(),以便对于Derived1上定义的字段,该函数返回“Derived1”,但对于“created”字段,它返回“Base”。有这样的事吗?

为了清楚起见,我不是在寻找断言Derived1是从Base派生的方法。我正在寻找的是一种方法来检查任何Django模型,并获得模型类的未知名称,如果有这样的类,它就是它的抽象超类。

0 个答案:

没有答案