我试图通过继承扩展我的django 抽象基础模型,但django模型的行为会自动将abstract = True
设置为abstract = False
抽象模型的子类困扰着我。
所以情况是
from django.db.models import Model
from django.db.models.base import ModelBase
Class TimeStampedModel(Model):
created_time = DateTimeField()
modified_time = DateTimeField()
class Meta:
abstract = True
ordering = ('created_time',)
get_latest_by = 'created_time'
class RecordModelMetaClass(ModelBase):
# NOT IMPLEMENTED YET
pass
class RecordModel(TimeStampedModel):
__metaclass__ = RecordModelMetaClass
recording_model = NotImplemented
recording_fields = NotImplemented
抽象TimeStampedModel是抽象RecordModel的基础模型。
问题是 Django 的元类ModelBase
会在导入时定义RecordModel时自动将RecordModel的abstract = True
转换为abstract = False
时间。
有没有办法关掉这个django的行为?
答案 0 :(得分:4)
是的,这是documented:
如果孩子想要扩展父类的Meta类,它可以将其子类化。
在你的情况下:
class RecordModel(TimeStampedModel):
class Meta(TimestampedModel.Meta):
abstract = True