gpt4 book ai didi

python - Django 按规则自动递增 IntegerField

转载 作者:搜寻专家 更新时间:2023-10-30 23:43:32 24 4
gpt4 key购买 nike

我有这种特殊情况,客户需要特定(传统)格式的预订编号,第一个从当年开始:2015-12345所以基本上每年我都必须从 0 开始

另一个以外键开头:7-123因此,每个用户创建的第一个文档的编号为 1,依此类推。

不幸的是,会有以该预订编号开头的长列表,因此获取所有记录并计算预订编号并不是真正的选择。我也考虑过覆盖 save() 方法,手动读取和自动递增,但是同时插入呢?

最佳答案

最好和最可靠的方法是使用 sql 触发器,这将完全消除对同时插入的担忧。但是覆盖保存方法也是完全可行的。

显式声明一个主键字段并为其选择整数。在你的保存方法中,如果主键是 None ,这意味着你正在保存一个新记录,查询数据库以确定新的主键应该是什么,分配它并保存。无论您在何处调用保存方法,都需要有一个原子事务并在失败时重试保存。

顺便说一句,你每年的起点是 0。这显然会导致冲突。因此,您必须在主键前加上年份,并在显示时将其删除。 (相信我,您不想在 Django 中弄乱复合主键)

关于python - Django 按规则自动递增 IntegerField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32101737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com