Tengo una pregunta sobre cómo podemos filtrar por SUMA de varias columnas.
Ejemplo:
class Foo(models.Model): i1 = models.IntegerField() i2 = models.IntegerField() i3 = models.IntegerField()Y necesito filtrar objetos donde la SUMA de i1, i2, i3 es inferior a 200. He intentado lograrlo con:
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) # errorGracias.
Puedes usar F() , y con anotación :
Foo.objects.annotate(i_sum=F('i1') + F('i2')+ F('i3')).filter(i_sum=200)Puedes usar extra
Foo.objects.extra(where=["i1 + i2 + i3 > 200"])