Подтвердить что ты не робот

Юг игнорирует изменение значения по умолчанию поля в 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, которую я не нашел, которая распознает изменение по умолчанию?

Спасибо!

4b9b3361

Ответ 1

Юг не будет обновлять значение по умолчанию для существующих столбцов, потому что для него важно только при добавлении нового столбца в непустую таблицу. django orm будет обрабатывать новое значение по умолчанию для новых строк перед удалением базы данных.

Если вы будете работать с базой данных извне django orm, вам необходимо обновить ее вручную.

Дополнительные пояснения south/db.add_column