对记录的值进行计数和求和,在Django中由外键字典过滤



我在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',
                              )  

我有一个由Client方法创建的外键列表。我想做两件事,首先我想通过"XYZ"的名字来计算所有具有task_type的任务,仅限于字典中的客户端。其次,我想通过"ABC"的名称对所有任务的所有value_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"命名的task_type的任务,仅限于查询集

中的客户端
Task.objects.filter(client__in=clients, task_type__name='XYZ').count()

将查询集中所有任务的value_num以ABC的名称相加

from django.db.models import Sum
Task.objects.filter(client__in=clients, task_type__name='ABC').annotate(Sum('task_value__value_num'))

相关内容

  • 没有找到相关文章