【发布时间】:2015-05-12 08:05:16
【问题描述】:
我正在尝试通过继承扩展我的 django 抽象基础模型,但是 django 模型在抽象模型的任何子类上自动将 abstract = True 设置为 abstract = False 的行为让我很困扰。 p>
情况是这样的
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 的行为吗?
【问题讨论】:
-
什么是 ModelMase(在 ModelBase 中更正,顺便说一句)?
-
@Pynchia 这是 django.db.models.Model 的元类
标签: python django inheritance