在Django的特定年份汇总

时间:2014-08-29 14:32:37

标签: django django-models django-views django-queryset

我有一个模特:

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对象也是必要的,因此总和是正确的。

0 个答案:

没有答案