Измените с "unqiue = True" на "unique = False" в django - PullRequest
0 голосов
/ 13 января 2010

У меня есть модель с CharField, в которой ранее для «unique» было установлено значение «True», но теперь оно изменено на «False». Но когда я пытаюсь сохранить это поле с чем-то, что существует, django все равно выдает ошибку IntegrityError.

Как я могу изменить это поведение, чтобы оно допускало непонятные значения?

База данных MySQL.

Ответы [ 4 ]

2 голосов
/ 02 февраля 2010

Я предлагаю использовать http://south.aeracode.org,, это приложение для переноса БД для Django, которое позволяет вносить такие изменения, даже не касаясь оболочки / администратора MySQL. Таким образом, у вас есть своего рода воспроизводимые макросы для обновления любого компьютера до последней схемы БД.

И использовать его так же просто, как написано здесь: http://south.aeracode.org/wiki/ConvertingAnApp

1 голос
/ 13 января 2010

Удалите уникальный индекс.

0 голосов
/ 02 февраля 2010

Я пытался сделать то же самое и обнаружил, что с django-south 0.5 юг не справляется с этим для вас.

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

use mydb;
desc mytable;

Это покажет вам схему для таблицы, и вы увидите, что поле все еще будет иметь значение "UNI" в ключевом столбце.

SHOW INDEX FROM mytable FROM mydb;

Должен быть индекс, для которого Non_unique имеет значение 0.

ALTER TABLE mytable DROP INDEX indexname;

Если вы снова посмотрите на схему таблицы, вы увидите, что «UNI» больше не находится в ключевом столбце.

0 голосов
/ 13 января 2010

Вы убедились, что перед повторным запуском своего веб-приложения вы повторно синхронизировали свою базу данных в django, используя команду «python manage.py syncdb» в командной строке? Это может решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...