【发布时间】:2020-05-24 11:24:48
【问题描述】:
在一个 Django 项目中使用 postgresql,我曾经在 db 中插入 en 条目,并且有一天。其他有权访问它的人使用 pgadmin4 在数据库中手动添加了 36 行其他行。当我想在 Django 项目中添加新行时,我得到了 IntegrityError 显然,因为 Django 试图将 1 加到 Django 项目添加的最后一个条目 id (这就是我认为的试图做)。这是回溯:
duplicate key value violates unique constraint "register_catalog_pkey"
DETAIL: Key (id)=(2) already exists.
如何告诉 Django 最后一个条目 id 是 36(最后一个用 pgadmin4 手动添加的值)?
我还尝试在 Django Admin 中设置 id 字段,以便我可以对其进行编辑,但它没有显示出来。
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)
【问题讨论】:
-
这必须在数据库中修复。您必须重置序列,通常使用
ALTER SEQUENCE <table>_id_seq RESTART WITH <next_id>之类的东西。您必须替换<>中的值。
标签: python django postgresql django-models django-admin