@Hadmi

Как правильно изменить поле наследуемой модели на жёстко заданное значение?

Добрый день.

У меня есть модель-база, от которой я наследую остальные модели, допустим:

class Base(models.Model):
    moveable = models.BooleanField(default=True, blank=False, null=False)
    abstract = models.BooleanField(default=False, blank=False, null=False)
    hidden = models.BooleanField(default=False, blank=False, null=False)


Далее, у некоторых наследуемых моделей эти свойства должны быть жёстко заданы. Например, модель "Equipment" должна обладать жёстко заданными значениями moveable=True, abstract=False.
Теперь, собственно, вопрос.
Можно ли жёстко задавать значения полей при описании наследуемой модели, вот так:
class Equipment(Base):
    moveable = True
    abstract = False
    ...
    ...


Либо же необходимо заморачиваться с прописыванием значений при инициации экземпляров класса, чтобы не сломать структуру модели Джанго?
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
@PashaWNN
Необходимо заморачиваться, т.к. логика чтения/записи в базу завязана на сами классы Field и так она работать не будет, а скорее всего возникнет ошибка ещё при попытке создания миграций из-за того, что поле модели переопределено на обычную переменную.
Но лучше заморочиться и подумать над архитектурой, почему вообще она привела к необходимости жестко задавать значения полей для дочерних моделей. Возможно, у базового класса эти колонки не нужны?
Джанго также поддерживает такую вещь, как абстрактные модели, которые вообще не создают таблиц в базе данных, а только выступают базовыми для других моделей. Скорее всего это то, что вам нужно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы