我正在尝试建立属于某个项目的报表列表。每个项目可以有多个报告。每个报表必须有唯一的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)
为每个新报表增加报表id的最佳方法是什么?你有什么建议?您是否建议我为每个项目查找最大数量(报告id)?或者,我应该“计数”每个项目的报告id条目并添加+1吗?或者完全不同的东西?
提前谢谢
编辑:我想有这个:项目1:cawreport1,cawreport2,等等。。。项目2:cawreport1、cawreport2等。。。
我想实现一些类似的发票软件,你不能删除和发票没有被注意到。我的客户的客户不希望我的客户能够删除一个cawreport并继续在序列中的下一个数字。实际上,他们通常重用现有的cawreport,而不是删除它并创建一个新的cawreport。
2条答案
按热度按时间xdyibdwo1#
主键对于数据库中的每条记录都是唯一的,所以当您添加与项目相关的新报表时,它将自动唯一。您可以轻松地对表中的项目报表进行排序。也可以在报表中添加日期字段进行排序。
因此,不需要跟踪与项目相关的报告的最新id。
a6b3iqyw2#
你需要一个
UUIDField
而不是IntegerField/AutoField
.