Django Model – Method Filter() dan Get()

Pada modul ini kita akan membahas penggunaan method get(), filter() dan penggunaan operator pada queryset.

Method get() berguna untuk mengambil single row data, digunakan jika data adalah unik. Contohnya retrieve data berdasarkan primary key.

Method filter() berguna untuk mengambil data berdasarkan kondisi tertentu. Method Filter dapat dilakukan berulang (chained).

Untuk membuat kondisi, perlu digunakan logic operator seperti AND atau OR. Operator ini perlu diimport dari django.db.models dari Q function.

Method get()

Seperti yang sudah dibahas diatas, pastikan method get harus mengembalikan single row data.

Untuk demo kita gunakan python REPL, dengan menjalankan perintah

 python manage.py shell

Pertama kita import dahulu library Patient. Kemudian gunakan method get dengan parameter pk atau primary key, untuk contoh kedua digunakan field first_name, namun pastikan data adalah unik.

>>> from boffice.models import Patient
>>> Patient.objects.get(pk=1)
<Patient: Budi Ajah, umur: 28 tahun.>


>>> Patient.objects.get(first_name='Budi') 

<Patient: Budi Ajah, umur: 28 tahun.>

Method filter()

Untuk filter, digunakan untuk retrieve data berdasarkan kondisi. Seperti yang sudah dibahas diatas, kita bisa lakukan chaining pada filter, lihat contoh code ketiga.

Perhatikan, untuk django queryset, tidak bisa digunakan tanda > atau <, namun digunakan __gte atau __lte.

>>> Patient.objects.filter(age__gte=25).all()
<QuerySet [<Patient: Budi Ajah, umur: 28 tahun.>, <Patient: Iwan Dech, umur: 30 tahun.>]>

>>> Patient.objects.filter(age__lte=25).all() 
<QuerySet [<Patient: Wati Tiwa, umur: 21 tahun.>, <Patient: Agus Elek, umur: 23 tahun.>]>

>>> Patient.objects.filter(age__lte=25).filter(first_name='Agus').all()
<QuerySet [<Patient: Agus Elek, umur: 23 tahun.>]>

Menggunakan Operator

Untuk menggunakan operator AND atau OR, kita perlu import library Q.

Contoh pertama adalah operator AND dengan menggunakan tanda &. Sementara contoh kedua adalah operator OR dengan tanda |

>>> from django.db.models import Q
>>> Patient.objects.filter(Q(age=23)& Q(first_name='Agus')).all()     
<QuerySet [<Patient: Agus Elek, umur: 23 tahun.>]>

>>> Patient.objects.filter(Q(age=23) |  Q(first_name='Wati')).all() 
<QuerySet [<Patient: Wati Tiwa, umur: 21 tahun.>, <Patient: Agus Elek, umur: 23 tahun.>]>

Sampai disini kita sudah membahas penggunaan method get(), filter() dan penggunaan Q operator.

Untuk dokumentasi lengkap, silakan kunjungi official documentation di https://docs.djangoproject.com/en/4.0/topics/db/queries/

Sharing is caring:

Leave a Comment