如果django模型是抽象的,如下所示,有没有办法检查类以确定它是抽象的?
class MyModel(models.Model):
class Meta:
abstract = True
我希望我可以检查MyModel.Meta.abstract,但根据Django文档:
Django确实对抽象基类的Meta类进行了一次调整:在安装Meta属性之前,设置abstract = False 。这意味着抽象基类的子项本身不会自动成为抽象类。
有什么想法吗?谢谢!
答案 0 :(得分:13)
您可以实例化MyModel,然后检查._meta.abstract。
所以在代码中:
m = MyModel()
print m._meta.abstract
答案 1 :(得分:2)
我想指出你不需要实例化一个模型来检查它是否是抽象的 - Django模型继承了一个在类实例化时添加_meta的实际元类。
因此,与@ sheats的代码类似,请尝试
from django.db.models import Model
class MyModel(Model):
pass
print MyModel._meta.abstract
或者,对于一个积极的例子
from django.db.models import Model
class MyModel(Model):
class Meta(object):
abstract = True
print MyModel._meta.abstract
当然,这也适用于内置模型和从Django模型继承的任何内容。
from django.contrib.auth.models import User
print User._meta.abstract