我正在尝试在模板
中以下表格式输出查询RAW.objects.filter(at_date__year='2011',at_date__month='02').values('user','attend').order_by().annotate(total=Count('attend'))
查询输出
[{'user': u'sushanth', 'total': 13, 'attend': u'P'}, {'user': u'sushanthreddy', 'total': 2, 'attend': u'A'}, {'user': u'ram', 'total': 5, 'attend': u'P'}, {'user': u'ram', 'total': 2, 'at_attend': u'PL'}]
在这里,我想让用户在模板中不同,作为不同的标题格式参与,并总计到相应的标题。
user P A PL
sushanth 13 2 0
ram 5 0 2
对此有任何帮助吗?
答案 0 :(得分:0)
当您使用values
子句时,Django将根据您要求的值在SQL中发送DISTINCT
短语。所以,你已经只得到了“用户”和“参加”的不同组合。
这个输出有多大?如果您只查看几百行,我建议您只需在Python中迭代字典并创建汇总。如果您正在寻找更多,那么有一些选择。可能我推荐的是创建一个使用post_save
信号填充的汇总模型/表,其中包含每个用户的P,A和PL信息,以及用户唯一的信息。然后,您只需查询汇总表并吐出数据。
基本上你创建一个看起来几乎与输出完全相同的表:四列(当然不包括主键)。然后,每次保存当前表中的记录时,它都会将相应的数字写入汇总表中的正确列。