我在数据库中创建了31个对象。现在,由于某种原因,如果我通过Django管理页面创建一个新对象,新对象的ID将为33.现在,假设我更改了我更改其ID然后删除它。如果我尝试创建一个新对象,它的id将是34.所以,id总是移动2.我是数据库和Django的新手,是否有任何理由这样做?感谢
注意:我没有上传任何代码,因为我认为这不是问题......
答案 0 :(得分:1)
默认情况下,id是一个整数,在创建对象时总是递增。它也会递增,以便永远不会再使用已删除对象的ID。
增量由数据库本身处理,而不是Django。例如,使用PostgreSQL,相应的数据库字段对应于" id"拥有" PRIMARY KEY"约束。它基本上意味着该字段不应为null,并且不重复。此外,该字段将与序列相关联,该序列存储用于下一行创建的id。要更改此数字,请在数据库shell中运行:
ALTER SEQUENCE yourobjectstable_id_seq RESTART WITH 1234;
然而,正如您对问题的评论所强调的那样,这是您不应该做的事情:最好保持"唯一性"主键的功能,即使对于已删除的对象,因为其他表可能使用id来引用主表中的行。