Как переопределить значение по умолчанию для поля модели из абстрактного базового класса

У меня есть код, который выглядит так:

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

и я хотел бы переопределить значение по is_public поля is_public в модели Message, чтобы оно было 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, поэтому нет никакой гарантии, что он будет работать вечно.