Скажем, у меня есть модель Django, которая является абстрактным базовым классом:Как изменить аргументы поля в подклассах модели Django?
class Foo(models.Model):
value=models.IntegerField()
class Meta:
abstract = True
и имеет два производных классов, где я хотел бы по умолчанию значение поля будет отличаться для каждого ребенка классов. Я не могу просто переопределить поле
class Bar(Foo):
value=models.IntegerField(default=9)
потому что Django не позволит вам переопределить поля подклассов. Я видел сообщения о попытках изменить доступные варианты, но в этом случае я больше всего беспокоюсь об изменении значения по умолчанию. Любой совет?
Если бы я просто определить значения по умолчанию для всех элементов в базовом классе, мы могли бы тогда просто переопределить метод сохранения для все дочерние классы или значения по умолчанию, определенные в базовом классе, заставляют переменные экземпляра никогда не быть пустыми? (То есть, если я определяю значение по умолчанию в родительском классе, это значение по умолчанию добавлено при сохранении или при инициализации объекта?) – Zxaos
Опять же, вы должны увидеть наследование в Django как FK для суперкласса, поэтому если у суперкласса есть поле со значением по умолчанию, то в поле в подклассе также будет поле со значением по умолчанию, потому что поле фактически не относится к подклассу, а из суперкласса. – juliomalegria