【问题标题】:query output formting in django templateDjango模板中的查询输出格式
【发布时间】:2011-03-02 15:58:58
【问题描述】:

我正在尝试在模板中以下表格式输出查询

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

对此有什么帮助吗?

【问题讨论】:

  • 尝试合并列表中的字典,使您拥有 [{'user': 'susthanth', 'P': 13, 'A': 2, 'PL': 0} .. ] .在模板中浏览列表会更容易,因为每行都有一个列表条目。
  • 好主意,我会尝试更新你,如果可能的话如何合并以上 dict.sorry for troubling

标签: python django django-models django-templates django-views


【解决方案1】:

当您使用 values 子句时,Django 将根据您要求的值在 SQL 中发送 DISTINCT 短语。因此,您已经获得了“用户”和“参与”的不同组合。

这个输出可能有多大?如果您只查看几百行,我建议您在 Python 中简单地迭代您的字典并创建一个汇总。如果你看的不止这些,那么还有几个选择。我推荐的可能是创建一个使用post_save 信号填充的汇总模型/表,其中包含每个用户的 P、A 和 PL 信息,并且用户是唯一的。然后您只需查询汇总表并吐出您的数据。

基本上,您制作的表格看起来几乎与您的输出一模一样:四列(当然,不包括主键)。然后,每次保存当前表中的记录时,它都会将适当的数字写入汇总表中的正确列。

【讨论】:

    猜你喜欢
    • 2018-07-31
    • 2017-08-11
    • 2020-05-24
    • 2014-08-05
    • 2013-03-27
    • 2019-02-26
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    相关资源
    最近更新 更多