我对如何使用多列的SUM进行过滤有疑问。
示例:
class Foo(models.Model):
i1 = models.IntegerField()
i2 = models.IntegerField()
i3 = models.IntegerField()
我需要过滤i1,i2,i3的SUM小于200的对象。 我已经尝试过了:
Foo.objects.agregate(i_sum=Sum(i1,i2,i3)).filter(i_sum__lt=200) # error
Foo.objects.agregate(i_sum=Sum([i1,i2,i3])).filter(i_sum__lt=200) # error
感谢。
答案 0 :(得分:3)
您可以使用F()和with annotation:
Foo.objects.annotate(i_sum=F('i1') + F('i2')+ F('i3')).filter(i_sum=200)
答案 1 :(得分:0)
您可以使用extra
Foo.objects.extra(where=["i1 + i2 + i3 > 200"])