Python 通过Django外键字典过滤的记录的计数和求和值

Python 通过Django外键字典过滤的记录的计数和求和值,python,django,django-models,Python,Django,Django Models,我在Django查询此简化模型时遇到问题: class Client(models.Model): user_name = models.CharField class Task(models.Model): client = models.ForeignKey( 'Client', ) task_type = models.ForeginKey(

我在Django查询此简化模型时遇到问题:

class Client(models.Model):
    user_name = models.CharField

class Task(models.Model):
    client = models.ForeignKey(
                               'Client',
                               )
    task_type = models.ForeginKey(
                                  'Task_Type',
                                  )

class Task_Type(models.Model):
    name = models.CharField

class Task_Value(models.Model):
    value_num = models.DecimalField
    task = models.ForeignKey(
                             'Task',
                              )  
我有一个由客户端方法创建的外键列表。我想做两件事,首先我想计算所有任务类型为“XYZ”的任务,仅限于字典中的客户端。其次,我想以“ABC”的名称对所有任务的所有值_num求和,仅限于字典中的客户端。这两个值将相加并除以字典中的客户端数

下面是我为一个客户机使用的(并且正在使用的)方法,但是我在遍历列表时遇到了麻烦

cnt = Task.objects.filter(client=self.pk,event_type__name__exact="XYZ").count()
tasks = Task.objects.filter(client=self.pk,event_type__name__exact="ABC")[0]
value = tasks.task_value_set.get(field__name__exact='ABC').value_num
answer = int(cnt+value)  
编辑: 该列表源自以下内容:

group = Client.objects.filter(pk__in=client_list)  

其中,该方法生成客户端列表。

以“XYZ”的名称对具有
任务类型的所有任务进行计数,仅限于queryset中的客户端。

Task.objects.filter(client__in=clients, task_type__name='XYZ').count()
将所有任务的
值_num
以“ABC”的名称相加,仅限于查询集中的客户端。

from django.db.models import Sum

Task.objects.filter(client__in=clients, task_type__name='ABC').annotate(Sum('task_value__value_num'))

字典的格式是什么?看起来像这样:[,,]呃,那是一个列表(或查询集),不是字典。你说的对,对不起,我对Django有点陌生。我纠正了这个问题。