Berhubung saya sudah punya views/logika untuk menampilkan list sebuah data, saya cukup menambahkan tambahkan logika pencarian.
@user_passes_test(is_staff)
def news_lists(request):
news_lists = PostNews.objects.all().order_by('-created_at')
return render(request, 'dashboard/news_lists.html', {'news_lists': news_lists})
// Some code
query = request.GET.get('q', '') # Tangkap kata kunci pencarian dari parameter 'q'
@user_passes_test(is_staff)
def news_lists(request):
query = request.GET.get('q', '') # Tangkap kata kunci pencarian dari parameter 'q'
news_lists = PostNews.objects.all().order_by('-created_at')
if query:
news_lists = news_lists.filter(
Q(translations__title__icontains=query) | # Filter berdasarkan title
Q(translations__content__icontains=query) # Filter berdasarkan content
).distinct() # Pastikan tidak ada duplikasi
return render(request, 'dashboard/news_lists.html', {'news_lists': news_lists, 'query': query})
<form method="GET" action="/" class="search-form">
<input type="text" name="q" placeholder="Search News..." value="{{ request.GET.q }}">
<button type="submit"><i class="fas fa-search"></i></button>
</form>
<div data-gb-custom-block data-tag="for">
<div data-gb-custom-block data-tag="empty"></div>
<form method="get" action="" class="search-form">
<input type="text" name="q" placeholder="Search news..." value="{{ query }}">
<button type="submit">Search</button>
</form>
</div>