使用django.Filter()搜索或过滤已保存在django中的帖子的详细信息。
使用django的Q在queryset中进行搜索。 使用复选框,以便此filter()在我的网页中添加一个过滤器 什么时候-
/?q =班加罗尔
我得到的正确值为
LOCATION BANGALORE PUNE
ujjwal
56789
hgjk@hgjhk.vds
bottle
bisleri
bangalore
Sept. 20, 2018, 3 p.m.
但是当我同时选中两个复选框并执行搜索时:
?q =班加罗尔&q =浦那
如果您注意到上面的url,它正在执行“&”(和)运算,而我想在搜索中显示任意值的数据。假设仅在数据库中保存班加罗尔,但不保存,反之亦然。它什么也没显示。 ..
我的代码:
if query:
queryset = queryset.filter(
Q(Name__icontains = query) |
Q(Location__icontains= query) )
希望我能使您了解我的情况。
答案 0 :(得分:0)
正如Django Document所说,您可以使用以下代码访问具有相同键的query_params列表:
>>> q = QueryDict('a=1&a=2&a=3')
>>> q.lists()
[('a', ['1', '2', '3'])]
也结帐了this答案。
答案 1 :(得分:0)
我认为您应该可以执行以下操作:
from functools import reduce
query = request.GET.getlist('q')
queryset = queryset.filter(
reduce(lambda x, y: x | y,
[Q(Name__icontains=q) | Q(Location__icontains=q) for q in query]
)
)
这将建立一个Q
对象,or
-将每个搜索词放在一起。