我有一个模特:
class ModelA(models.Model):
date_start = DateField()
date_end = DateField()
amount = DecimalField()
日期范围可以在几年之间。有时我想总计特定年份的金额。
我认为解决这个问题的唯一方法是创建另一个模型B:
class ModelB(models.Model):
year = IntegerField()
month = IntegerField()
amount = DecimalField()
每次保存ModelA
对象时,我将在开始日期和结束日期之间的几个月内迭代,并为每个月创建一个ModelB
对象,其中金额除以之间的天数天数乘以特定月份的天数。
现在我可以使用ModelB.objects.filter(year=2014).aggregate(Sum('amount'))
获得金额。
我知道怎么做,但它是最好的解决方案吗?每当ModelA
对象发生变化且性能出现问题时,执行时间就会非常长。
我认为在创建新对象之前删除所有ModelB
对象也是必要的,因此总和是正确的。