如何根据模型的属性聚合QuerySet?

时间:2016-08-31 05:16:27

标签: python django django-queryset

例如某些型号:

class Foo(models.Model):
    a = models.FloatField()
    b = models.FloatField()

    @property
    def c(self):
        return self.a / self.b

我们希望在QuerySet中找到最小值:

bar = Foo.objects.aggregate(Min('c'))

但是这不起作用,因为c不在数据库中而且无法从db中获取。如何获得c的最小值Foo

1 个答案:

答案 0 :(得分:2)

您必须在查询本身内部执行逻辑,而不是在Python中评估的属性。这样的事情应该有效:

from django.db.models import F, Min

bar = Foo.objects.annotate(c=F('a') / F('b')).aggregate(Min('c'))