![](/img/trans.png)
[英]Django Migration: prevent base model creation after abstract inheritance
[英]How to extend django abstract base model by inheritance?
我正在尝试通过继承扩展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的abstract = True
到abstract = False
时RecordModel进口时间定义。
有什么办法可以关闭这种django的行为吗?
是的,这已记录在案 :
如果孩子想扩展父母的Meta类,则可以对其进行子类化。
在您的情况下:
class RecordModel(TimeStampedModel):
class Meta(TimestampedModel.Meta):
abstract = True
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.