python - Django 如何处理 AutoField 主键的增量?
问题描述
在一个带有postgresql的Django项目中,我曾经在数据库中插入了 en 条目,并且有一天。有权访问它的其他人已使用pgadmin4在数据库中手动添加了 36 行其他行。当我想在 Django 项目中添加新行时,很明显,因为Django尝试将 1 添加到 Django 项目添加的最后一个条目 id (这就是我认为它正在尝试做的事情)。这是回溯:IntegrityError
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
命令
ALTER SEQUENCE <table_name>_id_seq RESTART WITH 37
前任:ALTER SEQUENCE myapp_register_id_seq RESTART WITH 37
推荐阅读
- r - ZONAL STATISTIC:函数 EXTRACT 中的错误(替换长度为 0)
- lit-element - vaadin-grid cellClassNameGenerator 不呈现类
- pip - pip install PyBluez,安装出错
- regex - .htaccess 头痛:将根文件夹重定向到 A,这些文件夹到 B,忽略其余的
- vue.js - vue 面包屑未将完整路径设置为链接
- azure - Azure 认知搜索接收器 Kafka 连接器不工作
- python-3.x - 如何使用 discord.py 从 VoiceChannel 录制音频?
- javascript - 使用 redux 表单超出更新深度
- excel - 需要 VBA 代码从金额中删除点 (.),它应该显示长度为 6 位的数字
- javascript - 从实例动态导入文件,而不是类范围