Юг игнорирует изменение значения поля по умолчанию в Python / Django - PullRequest
12 голосов
/ 17 мая 2011

Почему Юг не распознает изменения значений полей по умолчанию в моделях Python?Например, возьмем эту существующую модель, которая перенесена с юга:

class MyFamily(models.Model):
    family_size = models.IntegerField(verbose_name="What is your family size?", default=2)

Теперь я бы хотел изменить значение по умолчанию с двух до четырех.Однако при схематизировании модуля South сообщает:

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 Ответ

11 голосов
/ 17 мая 2011

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

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

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

...