我有这个模特:
class LoggedUserDepartement(models.Model):
department = models.CharField(max_length=250, default='Care')
date = models.DateField()
login_count = models.PositiveIntegerField(default=0)
我的views.py中有此查询集:
department_count = LoggedUserDepartement.objects.all()
在我的模板中,我已经这样做了:
{% for item in department_count %}
{{item.date }} {{item.login_count}} {{item.department}}<br>
{% endfor %}
这是我得到的结果:
June 8, 2019 3 css
June 8, 2019 1 carefr
June 9, 2019 2 css
June 9, 2019 1 carefr
所以我在这里不能做的是,当我在Department字段上具有相同的值时,如何合并两个项目并汇总登录计数值,而不显示日期字段的值? 而不是我现在要得到的结果,我想得到这个波纹管:
{% for item in department_count %}
{{item.login_count}} {{item.department}}<br>
{% endfor %}
5 css
3 carefr
PS:此查询集中的日期字段不是必需的,但以后我将在其他查询集中使用它,因此我无法删除它。
任何帮助将不胜感激。
答案 0 :(得分:0)
我们可以进行如下汇总:
from django.db.models import Sum
LoggedUserDepartment.objects.values('department').annotate(
total_login=Sum('login_count')
).order_by('department')
然后将其渲染为:
{% for item in department_count %}
{{ item.total_login }} {{ item.department }}<br>
{% endfor %}
话虽这么说,但我不确定上述建模是否是解决此问题的最佳方法。这里基本上有两个问题:
Department
,并用ForeignKey
链接到它;和login_count
),而不是汇总单个记录。这将使维护数据库变得困难。