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