python – 如何覆盖从抽象基类的模型字段的默认值

我有一些代码看起来像这样:

class BaseMessage(models.Model):
    is_public = models.BooleanField(default=False)
    # some more fields...

    class Meta:
        abstract = True

class Message(BaseMessage):
    # some fields...

并且我想覆盖Message模型中is_public字段的默认值,以便该模型为True。

我已经查看了一些相关的Django文档和模型对象周围,但我无法找到正确的地方做到这一点。有什么建议么?

最佳答案
你实际上可以这样做:

class BaseMessage(models.Model):
    is_public = models.BooleanField(default=False)
    # some more fields...

    class Meta:
        abstract = True

class Message(BaseMessage):
    # some fields...
Message._meta.get_field('is_public').default = True

我做了一两次。它工作,因为Message上的字段是与BaseMessage上的字段不同的实例。但是,我怀疑它是建议;-)这取决于很多如何django内部目前工作,所以不能保证它将永远工作。

转载注明原文:python – 如何覆盖从抽象基类的模型字段的默认值 - 代码日志