模型:
class Category(models.Model):
name = models.CharField(max_length=100)
class Operation(models.Model):
date = models.DateField()
value = models.DecimalField(max_digits = 9, decimal_places = 2)
category = models.ForeignKey(Category, null = True)
comments = models.TextField(null = True)
现在我要创建一个包含13列的视图:
类别名称| -11 | -10 | -9 | ...... | -1 | 0
例如
......食物.. | $ 123.00 | 100.14美元| ...... | $ 120.13 | $ 54.12
.clothes。| $ 555.23 | $ 232.23 | ...... | $ 200.12 | $ 84.44
其中$ 123.00例如是类别食品的操作值的总和,11个月前,100.14美元 - 10个月前等等 - $ 54.12是当月的总和,555.23 =>同样但是类别的衣服...
我google了很多,但大多数例子很简单 - 没有相关的类(类别)
建议答案1后的正确答案:
def get_month_sum_series(self):
import qsstats, datetime
from django.db.models import Sum
qss = qsstats.QuerySetStats(self.operation_set.all(), date_field='date', aggregate_field='value',aggregate_class=Sum)
today = datetime.date.today()
year_ago = today - datetime.timedelta(days=365)
return qss.time_series( start_date=year_ago, end_date=today, interval='months')
答案 0 :(得分:0)
看看django-qsstats。它具有time_series
功能,可让您在一个请求中随时获取整个系列的数据。在您的情况下,我将在Category
中创建一个方法,例如:
def price_series(self):
return qsstats.time_series(queryset=self.operation_set.all(), start_date=year_ago, end_date=now, interval='months')
当然,您需要设置year_ago
和now
个变量(例如,使用datetime
模块函数)。