我使用Q查找进行简单的搜索功能。这是从视图中获取的代码,
if query:
object_list = Post.objects.filter(
Q(title__icontains=query) |
Q(content__icontains=query)
).distinct()
但我有另一个模型"问题",我想在搜索中过滤问题以及Post。
如何对两个单独的模型使用Q查找,即' Post' &安培; '问题'在一个变量中,即" object_list"。
请帮我这个代码!
答案 0 :(得分:0)
存储Q
对象,为每个模型查询重复使用它,然后链接查询集:
from itertools import chain
q_obj = Q(title__icontains=query) | Q(content__icontains=query)
object_list = chain(Post.objects.filter(q_obj).distinct(),
Question.objects.filter(q_obj).distinct())
这允许您迭代object_list
一次。要允许多次迭代,可以将chain
返回的迭代器转换为列表:
object_list = list(chain(Post.objects.filter(q_obj).distinct(),
Question.objects.filter(q_obj).distinct()))