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
является уникальным, как я могу дать одно значение по умолчанию для всех строк? есть ли решение для этого. это действительно раздражает
1 ответ
Поскольку вы модифицируете модель, South запросит у вас значение по умолчанию для существующих строк, так как ваше новое поле по умолчанию null=False
, Вы можете избежать установки значения по умолчанию, установив null=True, blank=True
,
Если вы не хотите, чтобы оно было обнуляемым, и вы все еще хотите добавить это поле как обнуляемое, то вам нужно удалить таблицу и создать ее заново с вашим новым полем.
Юг по умолчанию дает новые столбцы null
значение, но так как по умолчанию поля null=False
затем Юг попросит вас указать значение для нового поля. Юг не дает пустых строк или 0 в качестве значений по умолчанию для строковых или целочисленных полей, вы должны указать Югу значение по умолчанию, если поле не может иметь значение NULL, и если оно имеет значение NULL, оно даст значение по умолчанию: null
,