Tôi đang cố gắng xây dựng tìm kiếm cho một trang web Django mà tôi đang xây dựng và trong tìm kiếm đó, tôi đang tìm kiếm theo 3 mô hình khác nhau. Và để có được phân trang trên danh sách kết quả tìm kiếm, tôi muốn sử dụng chế độ xem object_list chung để hiển thị kết quả. Nhưng để làm điều đó, tôi phải hợp nhất 3 truy vấn thành một.
Làm thế nào tôi có thể làm điều đó? Tôi đã thử điều này:
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")
Nhưng điều này không làm việc. Tôi gặp lỗi khi tôi cố gắng sử dụng danh sách đó trong chế độ xem chung. Danh sách bị thiếu thuộc tính clone.
Có ai biết làm thế nào tôi có thể hợp nhất ba danh sách page_list
, article_list
và post_list
?
union
.