Dalam pengembangan aplikasi web menggunakan Django, seringkali kita membutuhkan fitur pencarian yang dapat membantu pengguna untuk menemukan data dengan cepat. Django menyediakan library yang kuat bernama django-filter yang memudahkan kita untuk membuat fitur pencarian ini. Dalam artikel ini, kita akan membahas cara membuat fitur pencarian menggunakan django-filter
.
Pertama, pastikan kita telah menginstal library django-filter
pada project kita.
Kita dapat melakukannya dengan menjalankan perintah berikut melalui command line:
pip install django-filter
Setelah menginstal django-filter
, kita perlu menghubungkannya dengan model yang ingin kita berikan fitur pencarian. Misalnya, jika kita ingin membuat fitur pencarian pada model NamaModel
, ikuti langkah-langkah berikut:
Impor library django-filter dan model yang akan digunakan:
from django.db import models
import django_filters
Buat kelas filter yang mewarisi dari django_filters.FilterSet
dan tentukan field-field yang akan digunakan untuk pencarian:
class NamaModelFilter(django_filters.FilterSet):
field_pencarian = django_filters.CharFilter(lookup_expr='icontains')
class Meta:
model = NamaModel
fields = ['field_pencarian']
Selanjutnya, kita perlu membuat URL dan view yang akan menangani fitur pencarian. Berikut adalah contoh langkah-langkahnya:
Di dalam urls.py
, tambahkan URL yang akan digunakan untuk menampilkan halaman pencarian:
class NamaModelFilter(django_filters.FilterSet):
field_pencarian = django_filters.CharFilter(lookup_expr='icontains')
class Meta:
model = NamaModel
fields = ['field_pencarian']
Di dalam views.py
, tambahkan view yang akan menampilkan halaman pencarian dan mengambil data yang relevan sesuai dengan pencarian yang dilakukan:
from django.shortcuts import render
from .models import NamaModel
from .filters import NamaModelFilter
def hasil_pencarian(request):
nama_model_filter = NamaModelFilter(request.GET, queryset=NamaModel.objects.all())
return render(request, 'hasil_pencarian.html', {'filter': nama_model_filter})
Terakhir, kita perlu membuat template untuk halaman pencarian. Berikut adalah contoh sederhana bagaimana form pencarian menggunakan django-filter dapat ditampilkan pada template hasil_pencarian.html
:
<!DOCTYPE html>
<html>
<head>
<title>Hasil Pencarian</title>
</head>
<body>
<h1>Hasil Pencarian</h1>
<form method="get" action="{% url 'hasil_pencarian' %}">
{{ filter.form.as_p }}
<button type="submit">Cari</button>
</form>
<table>
<thead>
<tr>
<th>Nama Field 1</th>
<th>Nama Field 2</th>
<!-- Tambahkan field lainnya -->
</tr>
</thead>
<tbody>
{% for data in filter.qs %}
<tr>
<td>{{ data.field1 }}</td>
<td>{{ data.field2 }}</td>
<!-- Tambahkan field lainnya -->
</tr>
{% empty %}
<tr>
<td colspan="2">Tidak ada data yang ditemukan.</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
Dengan menggunakan django-filter, kita dapat dengan mudah membuat fitur pencarian yang efektif pada aplikasi web Django kita. Dalam artikel ini, kita telah membahas langkah-langkah dari instalasi hingga implementasi fitur pencarian menggunakan django-filter. Dengan mengikuti langkah-langkah tersebut, kita dapat memberikan pengalaman pencarian yang lebih baik kepada pengguna aplikasi website kita. Selamat mencoba!