Python 如何根据模型的属性聚合查询集?

Python 如何根据模型的属性聚合查询集?,python,django,django-queryset,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不在数据库中,无法从数据库中获取。如何获得Foo的最

例如,某些型号:

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
不在数据库中,无法从数据库中获取。如何获得
Foo
的最小值
c

您必须在查询本身内部执行逻辑,而不是作为Python中计算的属性。像这样的方法应该会奏效:

from django.db.models import F, Min

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

您必须在查询本身内部执行逻辑,而不是作为Python中计算的属性。像这样的方法应该会奏效:

from django.db.models import F, Min

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