如何根据模型的属性聚合QuerySet?
How to aggregate QuerySet based on property of model?
例如某个型号:
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'))
例如某个型号:
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'))