Django Model – Read Data Menggunakan Method all()

Pada setiap model yang dibuat, terdapat Manager untuk membuat QuerySet yang dapat digunakan membaca data dari database.

QuerySet adalah lazily evaluated, artinya belum mengakses database sampai secara eksplisit diminta untuk membaca data.

Untuk membaca data digunakan method all() dan get(), untuk melakukan filtering digunakan method filter() dan exclude().

Untuk informasi lengkap mengenai Django Query, bisa lihat di https://docs.djangoproject.com/en/4.0/topics/db/queries/

Pada modul ini kita akan membahas method all() untuk mengambil seluruh isi table.

Untuk demo, kita gunakan python shell dengan menjalankan perintah

$ python manage.py shell

Dalam python shell, kita import library Patient, kemudian gunakan method objects.all().

>>> from boffice.models import Patient
>>> Patient.objects.all()
<QuerySet [<Patient: Patient object (1)>, <Patient: Patient object (2)>, <Patient: Patient object (3)>, <Patient: Patient object (4)>]>

Log akan menampilkan Object Patient, dalam hal ini terdapat 4 Patient (pada modul sebelumnya kita sudah insert 4 patient).

Informasi diatas tentu sangat tidak informatif, kita ingin melihat data first_name, last_name dan lainnya.

Untuk itu kita perlu modifikasi models patient. Buka file boffice/models.py, tambahkan kode dibawah.

from django.db import models

class Patient(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    age = models.IntegerField()

    def __str__(self):
        return f"{self.first_name} {self.last_name}, umur: {self.age} tahun."

Karena kita sudah melakukan perubahan pada models.py, kita perlu restart python shell. Gunakan perintah quit() atau Ctrl+z.

Jika Anda jalankan ulang perintah mengambil data sebelumnya, sekarang isi data akan ditampilkan.

>>> from boffice.models import Patient
>>> Patient.objects.all()
<QuerySet [<Patient: Budi Ajah, umur: 28 tahun.>, <Patient: Iwan Dech, umur: 30 tahun.>, <Patient: Wati Tiwa, umur: 21 tahun.>, <Patient: Agus Elek, umur: 23 tahun.>]>

Anda juga dapat menggunakan index dan slicing.

>>> Patient.objects.all()[1]
<Patient: Iwan Dech, umur: 30 tahun.>

>>> Patient.objects.all()[1:3] 
<QuerySet [<Patient: Iwan Dech, umur: 30 tahun.>, <Patient: Wati Tiwa, umur: 21 tahun.>]>

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

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

Sampai disini kita sudah bisa membaca data dari database. Pada modul selanjutnya kita akan melakukan filtering.

Sharing is caring:

Leave a Comment