我有两个模型。第一个是应用User
中的accounts
模型,另一个是应用Records
中的activities
模型。我想显示用户列表,其中包含根据date_and_time
#models.py file in "activities" app
from acccounts.models import User
class Records(models.Model):
class Meta:
verbose_name = "Record"
verbose_name_plural = "Record"
activity_choices = (('Solved', 'Solved'), ('Closed', 'Closed'),
('Escalated', 'Escalated'))
user = models.ForeignKey(
User, on_delete=models.PROTECT, null=True, blank=True)
date_and_time = models.DateTimeField(auto_now=True)
activity = models.CharField(max_length=50)
url = models.URLField(max_length=255, null=True, blank=True)
我希望某些东西会在我的模板输出中打印出来,例如:
Name | Solved | Closed | Escalated
----------------------------------------------------
Hasinoor | 120 | 35 | 9
----------------------------------------------------
James | 92 | 32 | 17
----------------------------------------------------
答案 0 :(得分:0)
您首先需要选择主要要使用的模型,然后使用反向关系注释计数通过Case
User.objects.all().annotate(records_count=Count(Case(
When(
records__date_and_time__range=['2011-01-01', '2019-01-01'],
then=1
),
output_field=IntegerField(),
)))
进行过滤要为不同类型的字段创建所需字段可以在批注中使用多个Count
,并且要过滤日期和键入When
,可以在Q expression中使用Case
或多个When
表达式。>