#django #postgresql
#django #postgresql
Вопрос:
У меня есть модель с автополем au, которая имеет первичный ключ как таковой:
class historical_recent_data(models.Model):
id = models.AutoField(primary_key=True, auto_created = True)
reference = models.CharField(max_length=100, verbose_name= 'reference')
Date = models.DateField()
Quantity = models.FloatField(default=0)
NetAmount = models.FloatField(default=0)
def __str__(self):
return self.reference
Теперь, когда я хочу ввести данные в таблицу БД с помощью формы в шаблоне, Django пытается присвоить id
полю значение 1, что приводит к следующей ошибке:
duplicate key value violates unique constraint "dashboard2_historical_recent_data2_pkey1"
DETAIL: Key (id)=(2) already exists.
в этой таблице БД более 11 000 значений, почему django автоматически не генерирует значение pk равным 11 001, когда новая форма отправляется в таблицу?
ОБНОВЛЕНИЕ: мой первоначальный вопрос заключается в том, почему приращение автозаполнения с 1 и not не увеличивается, начиная с самого большого значения pk в таблице.
Комментарии:
1. У вас есть
id
Id
поле и? Пожалуйста, не делайте этого. Большинство баз данных имеют соответствие столбцов без учета регистра, поэтому столбцыFOO
иfoo
совпадают.2. да, lol, это пробный проект, идентификатор фактически относится к серийному номеру деталей. конечно, это вызовет проблемы позже, но пока это сохраняется, пока я экспериментирую, я не думаю, что это корень проблемы, или это так?
3. Ну, я бы настоятельно посоветовал дать ему другое имя или, по крайней мере, указать
db_column=...
параметр с другим значением. Вероятно, есть конфликт.4. хорошо, я попробую
5. изменение идентификатора на что-то другое не помогло Виллем Ван Онсем
Ответ №1:
просто удалите поле id.
class historical_recent_data(models.Model):
# id = models.AutoField(primary_key=True, auto_created = True)
reference = models.CharField(max_length=100, verbose_name= 'reference')
Date = models.DateField()
Quantity = models.FloatField(default=0)
NetAmount = models.FloatField(default=0)
def __str__(self):
return self.reference
Комментарии:
1. Просто попробовал, это не меняет результат, я не понимаю, что может быть не так
2. прокомментируйте эту строку id = models . Автозаполнение (primary_key= True, auto_created = True) и удаление базы данных или файла базы данных. если вы используете sqlite. запустите команду 1) python manage.py makemigrations 2) python manage.py перенесите, если все еще это не работает. также удалите все файлы из папки миграции, кроме __init.py досье. повторная попытка внести изменения и выполнить миграцию
3. я использую postgresql
4. удалите базу данных и создайте другую с тем же именем. затем выполните эти шаги agaian
5. я попробовал ваше предложение, и у меня все еще та же проблема