Юг: запустить миграцию для столбца, который является уникальным и не нулевым - PullRequest
16 голосов
/ 29 августа 2011

Используя South / Django, я сталкиваюсь с проблемой, когда пытаюсь добавить столбец UNIQUE и NOT NULL для модели с существующими строками в базе данных. Юг предлагает мне указать значение по умолчанию для столбца, так как это NOT NULL. Но так как он также имеет ограничение UNIQUE, я не могу добавить значение по умолчанию для поля в models.py, и при этом я не могу указать одноразовое значение, потому что оно будет одинаковым во всех строках.

Единственный способ обойти это - сначала создать столбец, допускающий значение NULL, применить миграцию, запустить скрипт, чтобы заполнить существующие строки уникальными значениями в этом столбце, а затем добавить еще одну миграцию для добавления UNIQUE ограничение на этот столбец.

Но есть ли лучший способ сделать то же самое?

1 Ответ

13 голосов
/ 29 августа 2011

Да, это подход, который вы должны использовать. Для этого вы должны выполнить schemamigration -> datamigration -> schemamigration. к сожалению, если нет никакого способа сделать это в SQL, юг не может сделать это также.

...