Как Django обрабатывает приращение первичного ключа AutoField?

В проекте Django с postgresql я однажды вставил en entry в БД, и однажды. Кто-то, кто имеет к нему доступ, вручную добавил 36 других строк в базу данных с помощью pgadmin4 . Когда я хочу добавить новую строку с проектом Django, я, очевидно, получил IntegrityError , потому что Django пытается добавить 1 к последнему идентификатору записи, добавленному проектом Django (это то, что, я думаю, он пытается сделать). Вот обратная связь:

duplicate key value violates unique constraint "register_catalog_pkey"
DETAIL:  Key (id)=(2) already exists.

Как сообщить Django, что идентификатор последней записи равен 36 (последнее значение, добавленное вручную с помощью pgadmin4)?

Я также попытался иметь поле id в Django Admin, чтобы я мог его отредактировать, но оно не появилось.

class RegisterAdmin(admin.ModelAdmin)
    list_display_links = ['id',]
    list_display = ('id',)

Нужно ли удалять первичный ключ, обрабатываемый Django , и определять IntegerField в качестве первичного ключа?

register_id = models.AutoField(primary_key=True)

в

register_id = models.IntegerField(primary_key=True)

Всего 1 ответ


Используйте команду ALTER SEQUENCE

ALTER SEQUENCE <table_name>_id_seq RESTART WITH 37

Пример: ALTER SEQUENCE myapp_register_id_seq RESTART WITH 37


Есть идеи?

10000