我正在尝试为我正在构建的Django网站构建搜索功能,在该搜索中,我要跨越三个不同的模型进行搜索。为了在搜索结果列表上获得分页,我想使用通用的object_list视图来显示结果。但是为了做到这一点,我必须将三个QuerySet合并成一个。
我该怎么做?我已经尝试过这样做:
result_list = []
page_list = Page.objects.filter(
Q(title__icontains=cleaned_search_term) |
Q(body__icontains=cleaned_search_term))
article_list = Article.objects.filter(
Q(title__icontains=cleaned_search_term) |
Q(body__icontains=cleaned_search_term) |
Q(tags__icontains=cleaned_search_term))
post_list = Post.objects.filter(
Q(title__icontains=cleaned_search_term) |
Q(body__icontains=cleaned_search_term) |
Q(tags__icontains=cleaned_search_term))
for x in page_list:
result_list.append(x)
for x in article_list:
result_list.append(x)
for x in post_list:
result_list.append(x)
return object_list(
request,
queryset=result_list,
template_object_name='result',
paginate_by=10,
extra_context={
'search_term': search_term},
template_name="search/result_list.html")
但是这并不起作用。当我尝试在通用视图中使用该列表时,会出现错误。该列表缺少克隆属性。
我该如何合并三个列表:page_list
、article_list
和post_list
?