Django在queryset中的另一个不同字段上进行注释

时间:2015-03-11 19:36:51

标签: django django-queryset

我的模型如下:

class Task(models.Model):
    value= models.IntegerField()
    data = models.CharField(max_length=50, blank=True)

我想进行查询以返回每个不同数据的值的总和。我尝试了以下但是它没有工作:

Task.objects.all().distinct('data').annotate(value = Sum('value'))

我收到了这个错误:

NotImplementedError: annotate() + distinct(fields) not implemented.

1 个答案:

答案 0 :(得分:1)

尝试使用values代替distinct,这将按data进行分组(不确定这是否是您需要的)。

Task.objects.values('data').annotate(Sum('value'))

尝试.extra(选择整个对象)

Task.objects.extra(select={'values_sum': "SELECT SUM(values) FROM myapp_task t WHERE t.data = myapp_task.data"})