django回归模特身份?

时间:2013-01-18 03:54:25

标签: python django

我有以下ID列表

  • 1
  • 2
  • 3
  • 4

如果我删除id 2,然后我插入一个新值,则需要id为5 是否可以自动重新分配ID 2?

1 个答案:

答案 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的任何数据。