I've got some code that looks like this:
class BaseMessage(models.Model): is_public = models.BooleanField(default=False) # some more fields... class Meta: abstract = True class Message(BaseMessage): # some fields...
and I'd like to override the default value of the is_public
field in the Message model so that it's True
for that model.
I've looked through some relevant Django docs and poked around the model objects but I'm having trouble finding the right place to do this. Any suggestions?
You can actually do this as follows:
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
I have done this once or twice. It works, because the field on Message is a different instance than the field on BaseMessage. However, I doubt it's recommended ;-) It depends a lot on how django internals currently work, so there's no guarantee that it will work forever.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With