Не могу создать новую запись от администратора - PullRequest
0 голосов
/ 29 июня 2018

У меня есть модель под названием Company. Модель довольно проста, как вы можете видеть. В проекте я использую базу данных postgres.

У меня странная проблема при попытке создать новую запись администратора Django.

Сначала я добавляю 5 записей в базу данных по запросу sql из терминала. У них есть идентификатор от 1 до 5. В клиенте базы данных я их вижу. Теперь, когда я пытаюсь добавить новую компанию администратором, возникает следующая ошибка:

django.db.utils.IntegrityError: duplicate key value violates unique constraint "company_pkey"
DETAIL:  Key (id)=(5) already exists.

Может кто-нибудь сказать, как решить эту проблему?

models.py:

class Company(models.Model):
    name = models.CharField()

admin.py:

class CompanyAdmin(admin.ModelAdmin):
    search_fields = ('name',)


admin.site.register(Company, CompanyAdmin)

1 Ответ

0 голосов
/ 29 июня 2018

Вы видите эту проблему, потому что PostgreSQL использует последовательность для заполнения поля id. Каким-то образом последовательность вышла из синхронизации, возможно, вы присвоили идентификатор вручную.

Необходимо сбросить последовательность, используемую для первичного ключа в модели Company. Команда управления sqlsequencereset выведет необходимые команды.

$ python manage.py sqlsequencereset my_app

Замените my_app названием приложения, содержащего модель Company. Вы должны быть в состоянии передать его вывод команде управления dbshell.

$ python manage.py sqlsequencereset my_app| python manage.py dbshell
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...