为简单起见,假设数据库包含以下列:
表:门票
柱: 性别,数量,日期
其中Gender可以是M或F.每次购买都会插入一行。最后,我想要一个堆积的条形图,显示每个月男性和女性购买的数量。
我似乎无法找到一种方法来做到这一点,不需要2个查询,一个是每月M和一个F每月的总和。问题是查询集可能没有相同数量的对象,并且按日期可能不是相同的顺序。
我试过了: set = Model.objects.filter(date__month = month).values('gender')。aggregate(Sum('quantity'))
按日期排序,但不将M与F.分开。 添加M或F作为过滤器会为其中一个组生成正确的数量。
使用两个查询(M,F各一个)产生正确的数量和日期范围,但不一定产生相同数量的集合。 (例如,如果在某些月份M没有购买)。
提前感谢您的指导。
答案 0 :(得分:1)
您可以使用以下声明:
Model.objects.filter(date__month = month).values('gender'). \
annotate(total=Sum('quantity'))
为了每个性别每月的数量总和