2016-11-07 74 views
1

我正在使用Django Q对象来自动构建来自文本描述的复杂查询。在Django的Q查询中使用Max

在我的一些疑问,我需要在经典吴忠明查询相结合,与最大操作:

Book.objects.filter(Q(....) & Q(...) ....).aggregate(Max('price')) 

是否有表达的最大过滤器作为Q()滤波器的一种方式,所以我可以用一个简单链:

filter(Q(...) & Q(...) & Qmax(...)) 

这将是我的查询生成算法的框架更方便

回答

1

你可以写ÿ我们的查询是这样的:

from django.db.models import Max 
from django.db.models import Q 

query = Book.objects.all().aggregate(Max('price')) 

而且利用这个结果进一步过滤您的查询集:

query_set = Book.objects.filter(Q(...) & Q(...) & Q(price= query['price__max'])) 
+0

谢谢Prakhar!这正是我期待的!顺便说一下,你知道它是否兼容搜索Postgres JSONField的键值吗? – matt

+0

@matt很高兴我的回答帮了你。我不是Postgres的专家,但我认为它将与JSONField兼容。我不太确定。 –