如何使 IntegerField/CharField 在 Django 中自动递增字段为 1000001、1000002
How to make an IntegerField/CharField be auto-incrementing field in Django as 1000001, 1000002
我在模型中有一个字段"CharField",当用户创建一个项目时,如何使IntegerField/CharField成为Django中的默认自动递增字段1000001、1000002?或 year
+ 00001、00002、0003 等,我不能有多个 AutoField,而且该字段已经有很多数据。
解决方案是将您的字段设置为自动字段。如果你让它成为自动字段,那么 django 将不会添加导致错误的主键
can't have more than one AutoField.
You need to explicitly specify the primary key as
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'),
]
The alter command will change depends on the database you are using.
如果您想要一个自定义的 AutoField,那么您可以创建一个字符字段并将 editable 设置为 false。然后手动指定值。参考:https://techstream.org/Web-Development/Custom-Auto-Increment-Field-Django
我在模型中有一个字段"CharField",当用户创建一个项目时,如何使IntegerField/CharField成为Django中的默认自动递增字段1000001、1000002?或 year
+ 00001、00002、0003 等,我不能有多个 AutoField,而且该字段已经有很多数据。
解决方案是将您的字段设置为自动字段。如果你让它成为自动字段,那么 django 将不会添加导致错误的主键
can't have more than one AutoField. You need to explicitly specify the primary key as
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'),
]
The alter command will change depends on the database you are using.
如果您想要一个自定义的 AutoField,那么您可以创建一个字符字段并将 editable 设置为 false。然后手动指定值。参考:https://techstream.org/Web-Development/Custom-Auto-Increment-Field-Django