我一直在开发我的Django web应用的离线版本,并且经常删除某个ModelX的模型实例.

我已经从管理页面做到了这一点,没有遇到任何问题.该模型只有两个字段:名称和顺序,与其他模型没有其他关系.

新实例被赋予下一个可用PK,这是有意义的,当我删除了所有实例后,添加一个新实例会产生PK=1,这是我预期的结果.

将代码在线移动到我的实际数据库中,我注意到情况并非如此.我需要更改模型实例,所以我将它们全部删除,但令我惊讶的是,主键一直在递增,没有重置为1.

使用我判断过的Django API进入数据库,旧实例都消失了,但即使添加新实例,也会产生一个主键,该主键从上一个删除的实例停止的位置重新开始,而不是1.

不知道有没有人知道这里可能出了什么问题.

推荐答案

正如其他人所说,这完全是数据库的责任.

但你应该意识到,这是desirable种行为.ID唯一标识数据库中的实体.因此,它应该只引用一行.如果该行随后被删除,那么您没有理由希望新行重用该ID:如果这样做了,您将在现在删除的曾经具有该ID的实体和重新使用它的新创建的实体之间创建一个念力.这样做是没有意义的,您也不应该这样做.

Django相关问答推荐

Djnago admin中 Select 字段的自定义查询

如何在 Django 中设置与 Session 相关的字段

Django allauth 社交帐户注册中邮箱的模板变量

Django 获取用户创建的对象,这些用户属于用户列表

基于模型多选字段在模板django中显示结果

Django `UniqueConstraint` 异常处理方式与 'unique=True' 相同

是否可以在 Django 中重命名应用程序的组名?

关于Django中批量保存对象的问题

Django:在模板中显示当前语言环境

Django中的单表继承

如何将 Django forms.ChoiceField 呈现为 Twitter Bootstrap 下拉菜单

CherryPy 与 Django

jinja2模板引擎中的这个-是做什么的?

django.core.exceptions.ImproperlyConfigured:请求设置 USE_I18N,但未配置设置

如何动态检索 Django 模型类?

django - 如何使翻译工作?

现在如何在 Django 中处理每个对象的权限?

在 Django 中使用 LiveServerTestCase 时使用代码登录

django-rest-framework 接受 JSON 数据?

运行单元测试时禁用 Django South?