2014-01-26 3 views
0

У меня есть код, как это:Добавление данных в базу данных в выпуске Джанго

form = TestForm(request.POST) 
form.save(commit=False).save() 

Этот код иногда работает, иногда не делают. Проблема заключается в идентификаторе автоматического увеличения. Когда у меня есть данные в db, которые не написаны django, и я хочу добавить данные из django, я получаю IntegrityError id already exists.

У меня есть 2 строки в db (не добавлено django) Мне нужно нажать «добавить данные» 3 раза. После третьего раза, когда значение id увеличивается до 3, все в порядке.

Как это решить?

+0

Является ли ваш стол созданным django или каким-либо другим проектом? Имеет ли поле идентификатора значение auto increment? –

+0

Я делаю syncdb для создания пустых таблиц. После этого я перехожу к db-клиенту и вручную добавляю данные. Django смущает после этого – milandjukic88

+0

Почему вы выполняете commit = False, а затем вызываете сохранение немедленно? Это точно так же, как вызов 'form.save()' без commit = False. –

ответ

0

Эти ошибки целостности появляются, когда ваша последовательность таблиц не обновляется после создания нового элемента. Или если последовательность не синхронизирована с реальностью. Например, вы импортируете элементы из какого-то источника, а элементы также содержат идентификатор, который выше, чем указана ваша индексная последовательность. Я не видел случая, когда последовательности django messes вверх.

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

+0

Мой вопрос в том, как исправить, я знаю, что вы говорите ... – milandjukic88

+0

Я также объяснил это. Вы либо нуждаетесь в этом иностранном источнике, чтобы прекратить вставлять идентификаторы в базу данных, чтобы автоматическое увеличение могло выполнять свою работу. Или обновлять последовательности программно после каждой вставки. Вы можете изменять последовательности с помощью sql. –

Смежные вопросы