【问题标题】:Django get total count of each choicefield in templateDjango获取模板中每个选择字段的总数
【发布时间】:2018-05-30 12:30:45
【问题描述】:

示例模型:

SOURCE_CHOICES = (
  'PH': 'PHONE',
  'OT': 'OTHERS
)
class Test(models.Model):
    source = models.CharField(..., choices=SOURCE_CHOICES)

我可以通过使用以下查询集获得模型选择中每个项目的总数:

Test.objects.values('source').annotate(Count('source'))

它给了我以下输出:

<QuerySet [{'source': 'PH', 'lead_source__count': 5}, {'lead_source': 'OT', 'lead_source__count': 4}]>

下面是我想在模板中显示的内容:

Phone: 5
Others: 4

我怎样才能做到这一点?

到目前为止,我已经在模板中尝试了以下内容:

{% for src in source %}
  {% for k, v in src.items %}
    {{v}}
  {% endfor %}
{% endfor %}

它给了我以下输出:

PH 5
OT 4

【问题讨论】:

  • 请修复您的源代码。突出显示的语法清楚地显示了缺少的引号。确保您向我们展示的代码准确地代表您所询问的问题非常重要。
  • 请注意:Django没有抛出其他错误,我输入了代码,所以可能有错误,但我正在寻找我想要达到的最终结果的解决方案。
  • 您的代码准确地代表您所询问的问题,这一点非常重要。我们如何知道哪些错误是相关的,哪些是不相关的?再次,请edit您的问题并修复它主要包含的任何错误(至少有我之前提到的引用)。

标签: django django-models django-templates


【解决方案1】:

根据我的经验,DTL 使您能够访问模板中的 dict 键,例如:

{% for src in source %}
    PHONE: {{src.source}}
    OTHERS: {{src.lead_source__count}}
{% endfor %}

其他解决方案是实现模板标签并相应地使用它,但我上面提出的方式更优雅且易于使用(恕我直言)。希望对你有帮助

【讨论】:

  • 根据您的建议,模板中根本没有显示任何内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-12
  • 2014-08-17
  • 1970-01-01
  • 2021-08-21
  • 2021-04-01
相关资源
最近更新 更多