36👍
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.
0👍
For validation level overload like max_length
one could add this to apps.py ready
method
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class MyAppConfig(AppConfig):
name = "myapp"
verbose_name = _("myapp")
def ready(self):
from myapp.models import MyModel
# HACK: to set max_length for field when you can't change
# this on parent model for example when inheriting from third
# party app
MyModel._meta.get_field('field').max_length = 128
- [Django]-Django TextField max_length validation for ModelForm
- [Django]-How to create a user in Django?
- [Django]-What is the purpose of NGINX and Gunicorn running in parallel?
Source:stackexchange.com