Подтвердить что ты не робот

Добавление поля Autoincrement к существующей модели с Django South?

У меня есть проект Django, который запускается как импорт устаревшей базы данных. Из-за этого существует модель с составным первичным ключом. Это работало до тех пор, пока я использовал только устаревшие данные, но теперь хочу добавить новые данные, и форма, которую я создал, говорит мне, что я пытаюсь вставить повторяющиеся данные, по-видимому, потому, что она смотрит только на одно из полей, поскольку первичный ключ.

Теперь я хочу изменить модель, чтобы использовать первичный ключ автоинкремента, например, один Django будет автоматически добавлять. Я попытался удалить атрибуты первичного ключа из полей и поместить их в unique_together в класс Meta. Когда я запустил schemamigration с Югом, он хотел добавить поле id, как и ожидалось, но запросил значение по умолчанию.

Как я могу указать, что Юг должен каким-то образом назначить уникальные ключи, которые являются разумными для поля автоинкремента? (т.е. назначить последовательность [1... n] произвольному упорядочению записей)

Если это невозможно, есть ли другой способ выполнить одно и то же, предпочтительно используя Django и South?

4b9b3361

Ответ 1

Я решил проблему, которая потребовала от меня сделать это с помощью обходного пути:

Я скопировал данные из исходной таблицы во временную таблицу в SQL с помощью INSERT INTO... SELECT.... Затем я удалил исходную таблицу и воссоздал ее с полем автоинкремента. Затем я скопировал данные обратно в новую таблицу, при этом значения автоинкремента автоматически добавляются командой INSERT. Наконец, я выполнил поддельный прогон миграции South, чтобы таблицы South соответствовали новой схеме.