Очевидно, как указано в комментариях, поле «id» первичного ключа всегда добавляется, даже если оно вам не нужно.Он должен убираться с вашего пути, поэтому вы даже не замечаете его существования.В моем случае мне потребовалось указать значение при создании новой записи, что не должно работать.
Некоторое время назад я перенес эту базу данных из одной базы данных Postgres в другую базу данных Postgres.,Для этого я использовал метод дампа и загрузки SQL.Кажется, что некоторые последовательности были потеряны во время этой миграции.
Поскольку последовательности отсутствуют, в некоторых полях теперь отсутствовали возможности автоинкремента, объясняя ошибку IntegrityError при вставке.
Чтобы это исправить, я сделалследующее:
1) Экспортировать текущие данные:
manage.py dumpdata > data.json
2) Удалить вашу базу данных и создать новую пустую.
3) Запустить миграцию базы данных:
manage.py migrate
4) Загрузите данные снова, исключая некоторые данные по умолчанию, уже воссозданные Django.
manage.py loaddata --exclude auth.permission --exclude contenttypes data.json
Эта процедура, похоже, воссоздала последовательности, сохраняя при этом данные.