如何在Django中将IntegerField / CharField设置为自动递增字段,如1000001,1000002

时间:2018-10-17 08:35:50

标签: django python-3.x auto-increment

我在模型中有一个字段“ CharField”,当用户创建项目时,如何使IntegerField / CharField成为Django中默认的自动递增字段,如1000001、1000002?或year + 00001、00002、0003等,我不能有多个AutoField,并且该字段已经有很多数据。

1 个答案:

答案 0 :(得分:2)

解决方案是将您的字段设置为“自动”字段。如果将其设为自动字段,则django不会添加会导致错误的主键

  

最多只能有一个自动字段。   您需要将主键明确指定为

field = models.AutoField(primary_key=True) # or False

从1000001开始计数的最佳方法是修改迁移文件。这取决于您使用的数据库。如果您使用Postgres,则它看起来像这样。在迁移中编辑操作或运行SQL命令DB命令提示符:

operations = [
    migrations.CreateModel(...),
    # mysql specific
    migrations.RunSQL('alter table tablename auto_increment=1000001'),
]
  

alter命令将更改,具体取决于您所使用的数据库。

如果您想要一个自定义的AutoField,则可以创建一个char字段,并将editable设置为false。然后手动指定值。请参阅:https://techstream.org/Web-Development/Custom-Auto-Increment-Field-Django