Я намагаюся створити пошук сайту Django, який я будую, і в цьому пошуку я шукаю в трьох різних моделях. І щоб отримати сторінку на сторінці результатів пошуку, я хотів би використовувати загальний вигляд object_list для відображення результатів. Але для цього мені потрібно об'єднати 3 запити в один.
Як я можу це зробити? Я спробував це:
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
?
union
.