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

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

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

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


person Jamie Forrest    schedule 29.08.2011    source источник


Ответы (1)


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

person Thomas    schedule 29.08.2011