2016-11-07 44 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兼容。我不太確定。 –