我有以下ID列表
如果我删除id 2,然后我插入一个新值,则需要id为5 是否可以自动重新分配ID 2?
答案 0 :(得分:2)
Django中模型的主键通常由自动递增字段表示,该字段由数据库层处理。例如,在MySQL中,AUTO_INCREMENT选项将添加到主键中。
这为数据库层提供了一种为每条记录分配唯一ID的有效方法。如果没有对Django进行重大更改,就不可能不使用AUTO_INCREMENT类型。
相反,您可能需要添加一个由您控制的字段,您确保手动不包含任何间隙。 来自django.db导入模型
class MyModel(models.Model):
my_id = models.IntegerField(unique=True)
然后,您需要在保存前为my_id
指定一个值,表示您的序列不包含间隙。找到下一个my_id
插入的内容可能并非易事,可能不容易通过Django ORM高效地完成。有关一些想法,请参阅How to find gaps in sequential numbering in mysql?。
重新编号原始ID可能会有问题,特别是对于创建引用原始ID的任何数据。