【发布时间】:2016-02-08 18:07:44
【问题描述】:
我正在构建具有多个 T/F 过滤器选项的搜索功能,如下所示:
Search: ________________
Filters:
___ Open to Public
___ Parking Available
_x_ Free Entrance
在这种情况下,用户专门寻找可以免费参与的活动。我希望我的 Q 对象返回 free_entrance 设置为 True 的关键字匹配对象。
我的想法是在我的搜索功能中定义变量:
search_public = None
search_parking = None
search_free_entrance = True
然后像这样设置 Q 对象:
q_objects.append(
Q(
name__icontains=search_term,
public__icontains=search_public,
parking__icontains=search_parking,
free_entrance=search_free_entrance
)
)
但是,我希望为未过滤的变量返回所有对象(True 或 False)(而不仅仅是设置为 None 的对象)。是否有我可以插入的关键字,或者是否有我缺少的 Q 对象过滤器类型?
更新: 除了发布的答案之外,*args 还可以用于复杂(OR)Q 对象:
来自: http://www.nomadjourney.com/2009/04/dynamic-django-queries-with-kwargs/
args = ( Q( name__icontains = 'search_term' ) | Q( company__icontains = 'search_term' ) )
【问题讨论】:
标签: django django-queryset django-q