【发布时间】:2019-04-20 13:33:06
【问题描述】:
我正在尝试构建属于某个项目的报告列表。每个项目可以有多个报告。每个报告都必须有唯一的 ID,即:1、2、3 等。我将所有报告存储在一个表中,这就是为什么我不能使用 Django 的 autoField,因为我已经将它用于主键。
class Cawreport(models.Model):
caw_id = models.AutoField(primary_key=True)
project = models.ForeignKey(Project, on_delete=models.CASCADE)
# report_id is unique for each project
report_id = models.IntegerField(default=1)
为每个新报告增加 report_id 的最佳方法是什么?你会推荐什么? 您是否建议我为每个项目找到最大数量(report_id)?或者,我应该为每个项目“计算”report_id 条目并添加+1? 或者可能是完全不同的东西?
提前致谢
编辑: 我想要这个:项目 1:cawreport1、cawreport2 等…… 项目 2:cawreport1、cawreport2 等……
我想实现类似于开票软件的功能,在该软件中,您无法在不被发现的情况下删除和开票。我的客户的客户不希望我的客户能够删除一个 cawreport 并继续在序列中的下一个数字。实际上,他们通常会重复使用现有的 cawreport,而不是删除它并创建一个新的。
【问题讨论】:
-
它们真的必须是连续的,还是唯一的要求是它们是唯一的?
-
某些数据库(如 MySQL)不允许多个自动字段。此外,我真的不明白您为什么不使用
caw_id本身?为什么要添加一个额外的id会导致更多的重复等情况? -
什么是
caw_id不适合你使用?你想达到什么目的? -
每个项目可以有多个 cawreports。我将所有 cawreports 放在一个表中,我想要: 项目 1:cawreport1、cawreport2 等... 项目 2:cawreport1、cawreport2 等...