django south - unique=True, но указать значение по умолчанию для существующих строк?

Я создал индексное поле

channel_indexid = PositiveIntegerField(db_index=True, unique=True)

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

1. Quit now, and add a default...
2. Specify a one-off value.. 

Но channel_indexid является уникальным, как я могу указать одно значение по умолчанию для всех строк? есть ли обходной путь для этого. это действительно раздражает


person doniyor    schedule 27.08.2014    source источник


Ответы (1)


Поскольку вы изменяете модель, South запросит у вас значение по умолчанию для существующих строк, поскольку ваше новое поле по умолчанию равно null=False. Вы можете избежать присвоения ему значения по умолчанию, установив null=True, blank=True.

Если вы не хотите, чтобы оно обнулялось, и вы по-прежнему хотите добавить это поле как не обнуляемое, вам нужно удалить таблицу и создать ее снова с вашим новым полем.

Юг по умолчанию присваивает новым столбцам значение null, но поскольку поля по умолчанию имеют значение null=False, Юг запрашивает у вас значение, которое нужно присвоить новому полю. South не дает пустых строк или 0 в качестве значений по умолчанию для строковых или целочисленных полей, вы должны указать South значение по умолчанию, если поле не может быть пустым, и если оно допускает значение NULL, оно даст значение по умолчанию null.

person Carlos Calla    schedule 29.08.2014