@jagrmi-Py

Почему в django 1.9 у меня при makemigrations появляются миграции которых я не ожидаю?

в модели у меня есть поле
currency = models.CharField(_('currency'), choices=[(x, x) for x in settings.CURRENCIES], max_length=3)


эту модель я не правил, а правил другую где в параметр META изменил unique_together атрибут.
Естественно я ожидал что у меня будет миграция по изменению уникальности, а у меня дополнительно выбило

....
migrations.AlterField(
            model_name='mymodel',
            name='currency',
            field=models.CharField(choices=[('USD', 'USD'), ('JPY', 'JPY')], max_length=3, verbose_name='currency'),
        ),
.....


Чойзы у меня находятся в setting.py. В проекте куча миграций не моих, но именно моя миграция приводит к таким последствиям.
Подскажите куда рыть!!! Я честно видимо не вижу очвидных вещей.
  • Вопрос задан
  • 160 просмотров
Пригласить эксперта
Ответы на вопрос 2
Konstantin18ko
@Konstantin18ko
Стоматолог
Это миграции внутренние - django. Users, Groups, Permissions
Ответ написан
Комментировать
Guest007
@Guest007
Django, Python, Linux и всё такое...
Значение поля с choices формируется статически на этапе миграции. Просто в этот момент происходит интерпретация твоего list comprehension, формируется список и поле им обновляется. Тот факт, что с прошлого раза ничего не изменилось при миграции не отслеживается.
Если не хочешь видеть каждый раз эту миграцию - задай список валют статически, руками.
Если предполагается изменение "на лету" - сделай лучше связь со справочником валют (через ForeignKey или ManyToManyField)

Ну или каждый раз исправляй миграцию перед применением, удаляя это поле.

Или удаляй эту миграцию, если изменение этого поля в ней - единственная операция.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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