假设我有一组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模型,并获得模型类的未知名称,如果有这样的类,它就是它的抽象超类。