繁体   English   中英

如何通过继承扩展django抽象基础模型?

[英]How to extend django abstract base model by inheritance?

我正在尝试通过继承扩展django 抽象基础模型 ,但是django模型在抽象模型的任何子类上自动将abstract = Trueabstract = 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 = Trueabstract = False时RecordModel进口时间定义。

有什么办法可以关闭这种django的行为吗?

是的,这已记录在案

如果孩子想扩展父母的Meta类,则可以对其进行子类化。

在您的情况下:

class RecordModel(TimeStampedModel):
    class Meta(TimestampedModel.Meta):
        abstract = True

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM