0
我有一個表格有一組13個複選框,這些複選框一起構成了我的搜索條件......除了我還爲ALL或ANY添加了一對單選按鈕。尋找Django任何()和所有()查詢集
,我希望能與喜歡的事優雅閃避:
priority_ids = request.GET.getlist("priority") # checkboxes
collection = request.GET.get("collection") # radio buttons
priorities = []
for priority_id in priority_ids:
priorities.append(Q(focus__priority=priority_id))
if (collection == "any"): qset = any(priorities)
elif (collection == "all"): qset = all(priorities)
然而,任何()和所有()返回一個布爾值,不是我能在過濾器中使用的查詢集。我想要一個與「Q(...)| Q(...)| Q(...)」或「Q(...)等效的」任何「或」全部「。 。)& Q(...)「適用於1至13條任何標準。
請注意,你的'lambda's可以通過'operator.or_'和'operator.and_',分別取代。 – Dougal 2012-04-06 20:05:05
+1,謝謝指出 – 2012-04-07 18:39:22
雖然我們在這裏,不妨在priority_ids中爲p_id設置'priority_filters = [Q(focus__priority = p_id)]':) – Dougal 2012-04-07 18:46:06