当前位置: 首页 > 面试题库 >

删除所有实例后,Django模型实例的主键不会重置为1

严峰
2023-03-14
问题内容

我一直在开发Django Web应用程序的脱机版本,并经常删除某些ModelX的模型实例。

我已从管理页面完成此操作,没有遇到任何问题。该模型只有两个字段:名称和顺序,与其他模型没有其他关系。

给新实例下一个有意义的下一个可用pk,当我删除所有实例时,添加一个新实例将产生pk = 1,这是我期望的。

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

使用我已经检查过的Django API进入数据库,旧实例消失了,但是即使添加新实例也会产生一个主键,该键将从上次删除的实例离开的地方开始,而不是1。

想知道是否有人知道这里可能是什么问题。


问题答案:

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

但是你应该意识到这是理想的行为。ID唯一标识数据库中的实体。因此,它只能引用一行。如果随后删除了该行,则没有理由不希望新行重新使用该ID:如果这样做,则会在现在已删除的具有该ID的实体与该ID之间造成混淆。新创建的可重复使用的文件。这样做是没有意义的,你不应该这样做。



 类似资料:
  • 问题内容: 我想知道如何/是否有可能删除所有临时表的查询? 我一直在尝试使用tempdb.sys.tables解决问题,但是正在努力格式化name列使其可以被删除- 另一个使事情变得棘手的因素是,temp表名称通常包含’_’意味着进行替换变得更麻烦了(至少对我而言!) 有什么我可以使用的方法,可以删除所有临时表(本地或全局),而不必分别删除所有临时表? 谢谢! 问题答案: 临时表的要点是它们是..

  • 本文向大家介绍javascript  删除select中的所有option的实例,包括了javascript  删除select中的所有option的实例的使用技巧和注意事项,需要的朋友参考一下 javascript  删除select中的所有option的实例 方法一: 方法二:(那右边的Select中的所有option移到左边的Select)   以上两个方法都不够好!因为它们一次性都册除不了

  • 我是Django的初学者。我需要将模型实例转换为类似于Model.objects的字典。值,与关系字段。所以我写了一个小函数来实现这一点: 所以,我可以这样使用它: 你能提出更好的解决方案吗?谢谢!附言:对不起我的英语。

  • 项目类别: 主屏幕类别: 日志:第一次单击开始时:(计时器完成后) 单击调试按钮后(清除数组列表): 再次点击开始按钮后:(计时器完成后) 您可以看到ArrayList中的项目没有被清除。它增加了。我认为这是因为在spawnItem()中创建的Item实例仍然存在。我该如何解决这个问题? 我注意到每次我点击按钮都没有更多的项目。项目产生得更快。但是如何阻止这种情况呢?

  • 我已经看到了创建Django用户模型实例的不同方法。它遵循了Django开发中的最佳实践 1. 2.

  • 我有两个表,一个有复合主键,另一个有外键。它们都设置为删除时级联。问题是,当我从主表中删除一个复合键集“name:John date:02.02.2018”时,所有John行都会从带有外键的表中删除,但是可以有一个集合“name:John date:04.04.2018”以及日期为02.02的所有行。也删除了一些行,如何才能使其删除仅匹配外键集的行? 更新: