【问题标题】:Does Django support setting the beginning value for an id column?Django 是否支持为 id 列设置起始值?
【发布时间】:2025-12-11 16:40:02
【问题描述】:

我在 SO 上看到了几个问题和答案,大多数都是三岁或以上,我查看了 Django documentation(希望我没有错过它)。我必须有一个 9+ 位数的 ID。大多数响应是在数据库中执行此操作。我猜这意味着在 Django 中创建模型,然后返回数据库并更改 Django 创建的 id 列,在该列上使用新的起始/下一个值属性。

如果不是,我如何从 Django,Code First 创建一个数据库表,它允许我创建一个 id 列从 100000000 开始的表?并且,它可以通过 Django 中的库存模型对象方法来完成。我真的不想做一个特别的黑客。如果是这种情况,我可以去数据库并修复该列。我试图坚持 Django 的 Code First 理念(尽管我更喜欢数据库优先,而且我担心使用 inspectdb 会造成混乱。)

编辑:我不想使用UUID。我相信BigAutoField 是最好的。

【问题讨论】:

  • 你想要一个递增的 ID 吗?
  • @EricBlum 是的。自动递增。

标签: django database model


【解决方案1】:

您应该可以分两步完成:

1 - 在模型定义中使用 primary_key=TRUE 明确指定主键。有关更多信息,请参阅Django docs。然后,您可以为主键指定 BigAutoField 或您想要的任何其他类型。

2A - 如果您要预先填充数据库,只需在您的夹具中设置 pk: 100000000

2B - 如果您没有预先填充数据库,请使用 Django 模型迁移操作 RunSQL,详细说明 here。对于您的 SQL,请使用 ALTER TABLE tableName AUTO_INCREMENT=100000000

【讨论】: