我有一个关于如何按多列的 SUM 过滤的问题。
例子:
class Foo(models.Model):
i1 = models.IntegerField()
i2 = models.IntegerField()
i3 = models.IntegerField()
我需要过滤 i1、i2、i3 的总和小于 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
谢谢。
最佳答案
您可以使用 F() , 和 with annotation :
Foo.objects.annotate(i_sum=F('i1') + F('i2')+ F('i3')).filter(i_sum=200)
关于Django ORM,多列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43323724/