0

I have the following list of ids

  • 1
  • 2
  • 3
  • 4

If I delete id 2 and then I insert a new value, it takes id 5.
Is it possible to re-assign automatically id 2?

4

1 回答 1

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 有效地完成。请参阅如何在 mysql 中查找顺序编号中的空白?一些想法。

重新编号原始 id 可能会出现问题,尤其是对于创建引用原始 id 的任何数据。

于 2013-01-18T04:35:43.113 回答