如何在Django as 10000110002中使IntegerField/CharField成为自动递增字段

如何在Django as 10000110002中使IntegerField/CharField成为自动递增字段,django,python-3.x,auto-increment,Django,Python 3.x,Auto Increment,我在一个模型中有一个字段“CharField”,当用户创建一个项目时,如何使IntegerField/CharField成为Django中默认的自动递增字段10000110002?或者year+00001、00002、0003等,我不能有多个自动字段,并且该字段已经有很多数据。解决方案是将您的字段设置为自动字段。若将其设为自动字段,django将不会添加主键,这将导致错误 不能有多个自动字段。 您需要将主键显式指定为 要从1000001开始计数,最好的方法是修改迁移文件。这取决于您正在使用的数据

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

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

不能有多个自动字段。 您需要将主键显式指定为

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

operations = [
    migrations.CreateModel(...),
    # mysql specific
    migrations.RunSQL('alter table tablename auto_increment=1000001'),
]
alter命令将根据您使用的数据库进行更改


如果需要自定义自动字段,则可以创建字符字段并将“可编辑”设置为false。然后手动指定值。请参阅:

使用
AutoField
:可能存在重复项,您无法自动递增字符串,因为字符串不是sequential@solarissmoke谢谢,但是这个解决方案不起作用。我不能有多个自动字段,而且该字段已经有很多数据。@谢谢,但该解决方案不起作用。我不能有多个AutoField,该字段已经有很多数据。您好,感谢您帮助我解决这个问题,我正在使用Postgres,当我执行
updateTableName set auto_increment=1000001,3371条记录已经更新,当我执行
/manage.py migrate
时,我得到一个错误
django.db.utils.DataError:setval:value 0超出了序列“tablename_auto_increment_seq”(1..9223372036854775807)
错误应该是
django.db.utils.integrityyror:无法创建唯一索引“表名自动增量”详细信息:键(自动增量)=(1000001)重复。
,因为我在数据库中有关于此字段的多条记录。您是否为自动增量字段设置了声明位置。alter table tablename auto\u increment=1000001将为您执行此操作。或者alter SEQUENCE field\u name将使用1000001重新启动;我没有对其进行测试。因此我不知道哪一条将起作用。您好,是的,我已经设置了声明自动递增字段的位置,更改表tablename auto_increment=1000001,问题是自动递增字段有很多记录,数据库的自动递增字段现在有3371条记录=1000001,1)您将自动递增字段设置为主键。您不能允许重复值。2)我认为postgres中的自动递增字段是SERIA类型L和ALTER SEQUENCE字段_name RESTART WITH 1000001;是您需要设置初始值的内容。
operations = [
    migrations.CreateModel(...),
    # mysql specific
    migrations.RunSQL('alter table tablename auto_increment=1000001'),
]