我一直在开发Django Web应用程序的脱机版本,并经常删除某些ModelX的模型实例。
我已从管理页面完成此操作,没有遇到任何问题。该模型只有两个字段:名称和顺序,与其他模型没有其他关系。
给新实例下一个有意义的下一个可用pk,当我删除所有实例时,添加一个新实例将产生pk = 1,这是我期望的。
将代码在线移动到我的实际数据库中,我注意到情况并非如此。我需要更改模型实例,因此删除了所有实例,但令我惊讶的是,主键一直在递增而不重置为1。
使用我已经检查过的Django API进入数据库,旧实例消失了,但是即使添加新实例也会产生一个主键,该键将从上次删除的实例离开的地方开始,而不是1。
想知道是否有人知道这里可能是什么问题。
正如其他人所述,这完全是数据库的责任。
但是你应该意识到这是理想的行为。ID唯一标识数据库中的实体。因此,它只能引用一行。如果随后删除了该行,则没有理由不希望新行重新使用该ID:如果这样做,则会在现在已删除的具有该ID的实体与该ID之间造成混淆。新创建的可重复使用的文件。这样做是没有意义的,你不应该这样做。