You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Admin显示对象编号远高于实际数据量的问题咨询

问题解答

这是正常现象吗?

完全正常。Django模型默认使用AutoField作为主键,这个字段的值由数据库的自增序列维护。删除数据不会重置这个自增计数器——数据库会记录之前用过的ID值,新插入的数据会直接从最后使用过的ID继续递增,哪怕之前的记录已经被删除。你看到的695就是之前多次删传过程中累计使用过的最大ID,和当前实际存在的90条数据数量无关。

怎么重置计数从0开始?

这个操作只适合测试环境,生产环境不建议这么做(可能破坏外键关联、依赖ID的业务逻辑等)。具体操作分数据库类型:

1. 先确认所有对象已删除

你已经通过Django Admin完成了这一步,确认后台没有剩余数据即可。

2. 根据数据库类型执行重置命令

将以下代码中的appname替换成你的应用名称,peptideseq替换成模型对应的表名(Django默认表名是应用名_模型名小写),通过Django Shell执行:

SQLite

from django.db import connection
with connection.cursor() as cursor:
    cursor.execute("DELETE FROM sqlite_sequence WHERE name='appname_peptideseq';")

MySQL

from django.db import connection
with connection.cursor() as cursor:
    cursor.execute("ALTER TABLE appname_peptideseq AUTO_INCREMENT = 1;")

PostgreSQL

from django.db import connection
with connection.cursor() as cursor:
    cursor.execute("ALTER SEQUENCE appname_peptideseq_id_seq RESTART WITH 1;")

执行完后,新插入的数据ID就会从1开始计数了。

内容的提问来源于stack exchange,提问作者jax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 04:13:13