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'))