有没有办法将新Django对象的id值设置为以某个值开始?

9-b*_*its 14 django

有没有办法在Django中为对象设置id值的计数器?

例如,我有一组对象'视频'当前在id = 100,下次我创建一个'Video'类型的对象时,它将是id = 101.但是我希望所有新创建的Video对象都以id = 2000开头.有没有办法做到这一点?

Ben*_*Ben 19

只要在保存之前执行此操作,就可以在创建对象时指定ID:

new = Video()
new.id = 2000
new.save()
Run Code Online (Sandbox Code Playgroud)

你可以只计算你想要的ID - 虽然我不确定Django的自动ID字段有什么问题;)

  • 我认为OP意味着要问是否有一种方法可以在Django中配置auto-id序列的起始值. (4认同)

Den*_*1.5 5

您可以制作一个夹具,在您的数据库中创建一个 ID=1999 的虚拟行。那么下一个自动生成的 ID 将是 2000。

这个解决方案可能取决于你的数据库后端“从你离开的地方恢复”。至少 MySql 和 PostgreSQL 这样做(我猜每个后端都这样做)。

还有一个仅适用于 MySql 的解决方案(据我所知),它由一个 SQL 语句组成 ALTER TABLE tbl AUTO_INCREMENT = 100;

不过,这不再是数据库不可知论了。