Задать вопрос
@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
    ...
    ...


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

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

Похожие вопросы