首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Django中使IntegerField/CharField自动递增字段为1000001,1000002

如何在Django中使IntegerField/CharField自动递增字段为1000001,1000002
EN

Stack Overflow用户
提问于 2018-10-17 08:35:50
回答 1查看 5.7K关注 0票数 3

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-17 10:15:52

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

不能有一个以上的AutoField。您需要显式地将主键指定为

代码语言:javascript
代码运行次数:0
运行
复制
field = models.AutoField(primary_key=True) # or False

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

代码语言:javascript
代码运行次数:0
运行
复制
operations = [
    migrations.CreateModel(...),
    # mysql specific
    migrations.RunSQL('alter table tablename auto_increment=1000001'),
]

alter命令将根据您正在使用的数据库进行更改。

如果您想要一个自定义的AutoField,那么您可以创建一个char字段并使其可编辑为false。然后手动指定值。参考:https://techstream.org/Web-Development/Custom-Auto-Increment-Field-Django

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52850563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档