Юг: выполните миграцию для столбца, который является как уникальным, так и недействительным

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

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

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

Ответы

Ответ 1

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