Saya mencoba membangun pencarian untuk situs Django yang saya bangun, dan dalam pencarian itu, saya mencari dalam 3 model yang berbeda. Dan untuk mendapatkan pagination pada daftar hasil pencarian, saya ingin menggunakan tampilan object_list generik untuk menampilkan hasilnya. Tetapi untuk melakukan itu, saya harus menggabungkan 3 querysets menjadi satu.
Bagaimana saya bisa melakukan itu? Saya sudah mencoba ini:
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")
Tetapi ini tidak berhasil. Saya mendapatkan kesalahan saat mencoba menggunakan daftar itu dalam tampilan umum. Daftar ini tidak memiliki atribut clone.
Adakah yang tahu bagaimana saya bisa menggabungkan ketiga daftar page_list
,, article_list
dan post_list
?
union
.