Юг игнорирует изменение значения по умолчанию поля в Python/Django
Почему юг не распознает изменения значений полей по умолчанию в моделях Python? Например, возьмите эту существующую модель, которая мигрирует с юга:
class MyFamily(models.Model):
family_size = models.IntegerField(verbose_name="What is your family size?", default=2)
Теперь я хотел бы изменить значение по умолчанию от двух до четырех. Однако, при планировании модуля, Юг сообщает:
python manage.py schemamigration family --auto change_default_from_two_to_four_for_size
Running migrations for family:
- Nothing to migrate.
- Loading initial data for family.
Я мог бы вручную обновить начальную миграцию и использовать SQL для непосредственного обновления поля, но это боль. Есть ли команда South, которую я не нашел, которая распознает изменение по умолчанию?
Спасибо!
Ответы
Ответ 1
Юг не будет обновлять значение по умолчанию для существующих столбцов, потому что для него важно только при добавлении нового столбца в непустую таблицу. django orm
будет обрабатывать новое значение по умолчанию для новых строк перед удалением базы данных.
Если вы будете работать с базой данных извне django orm
, вам необходимо обновить ее вручную.
Дополнительные пояснения south/db.add_column