Skip to main content

Mengenal Models pada Web Framework Django

mengenal model we framework django

Setelah sekian lama saya tidak membuat tulisan di sini saya akan menulis tentang model. Mengenal models pada web framework Django. Pembahasan tentang Django disini belum lengkap, jadi saya akan melengkapinya dengan tulisan ini, sebagai tambahan kita untuk belajar membuat web dengan python

Setelah kita mengetahui models.py di Django ini, maka kita bisa melakukan CURD dengan Django

Back to top

1) Models Django

Model pada web framework Django, itu pada dasarnya adalah untuk mendefinisikan informasi tentang data yang dimiliki. Berisi bidang (field) dan juga menyimpan perilaku bagaimana data itu dikelola. Pada model class umumnya mewakili atau merepresentasikan satu tabel database.

model pada django itu adalah sebuah class python yang dari subkelas django.db.models, dan setiap atribut yang ada itu mewakili satu field dari database.

Back to top

2) Cara Membuat Models Django

Sebagai perbandingan, ini adalah cara membuat tabel pada MySQL

  • Syntax MySQL
    CREATE TABLE Tabel_Data (
    	id int AUTO_INCREMENT PRIMARY KEY,
    	nama varchar(50) NOT NULL,
    	alamat text NULL,
    	UNIQUE (nama)
    );
    

     

  • Syntax Models

    Dan berikut adalah cara membuat models pada Django

    from django.db import models
    
    class Tabel_Data(models.Model):
    	nama = models.CharField(max_length=50, unique=True)
    	alamat = models.TextField(blank=True, null=True)
    

     

Dari kedua syntax di atas, pada MySQL itu adalah cara membuat tabel di MySQL. Dan yang kedua, cara membuat models di Django. Pada pembuatan models di django, kita tidak menulis kode untuk membuat tabel database seperti pada di syntax pertama.

Karena pada django, apabila tabel belum ada, maka django akan membuat sebuah tabel yang sesuai dengan model yang dibuat. Untuk membuat tabel dari django, caranya dengan menjalankan perintah

python manage.py makemigrations

Perintah ini akan memeriksa, apakah ada perubahan yang terjadi pada models.py di App Django. Jika ada perubahan, maka ada pemberitahuan. Berikutnya untuk menulis perubahan itu ke database dengan menjalankan perintah

python manage.py migrate

Jika tidak ada ERROR, maka itu menandakan telah berhasil membuat tabel atau melakukan perubahan pada bagian tabel tertentu.

Tentang Kode:

  1. Pada baris pertama, class Tabel_Data(models.Model): ini adalah nama class yang juga berarti nama dari tabel database yang akan dibuat jika belum ada dan akan digunakan selanjutnya.
  2. Pada baris nama = models.CharField(max_length=50, unique=True) dan yang selanjutnya, ini adalah field dari database atau kolom dari tabel. Pada nama dan alamat ini nama kolomnya, dan pada models.CharField ini adalah field type, yaitu pada MySQL adalah VARCHAR, TEXT, INT, dan sebagainya. Dijango juga punya banyak field type seperti itu. (max_length=50, unique=True) disebut dengan field options, yaitu suatu nilai untuk field type. Misalkan pada di MySQL pada type VARCHAR=50, maka pada models.py menggunakan models.CharField(max_length=50) dan lainnya.
Back to top

3) Field Options

Pada dasarnya, syntax ini juga sama seperti pada syntax pada DBMS. Tapi kita tidak menuliskan syntax itu secara langsung. Kita hanya menggunakan saja atribut dan methodnya.

Beberapa Field options yang mungkin sering digunakan pada models.py

  • null dan blank. null dan blank ini sama-sama kosong, tapi pada null itu lebih kepada database related sedangkan blank lebih kepada validasi form atau form related. Nilai default dari kedua options ini adalah False. Kalau kamu mau membuat form yang tidak wajib diisi maka bisa menggunakan blank dan disertakan juga dengan null.

    Artinya pada sebuah form field yang tidak menggunakan options blank=True, maka field tersebut harus diisi. Atau akan muncul validasi form berupa pesan error saat seseorang tidak mengisinya. Dengan menggunakan options blank=True, maka validasi form akan membiarkan jika field tidak diisi.

  • default. Untuk menentukan nilai default dari field tersebut, valuenya juga bisa berupa objek yang bisa dipanggil.
  • max_length. Tidak semua field type memiliki argumen ini, dan pada VARCHAR (pada models CharField) yang punya nilai default 100, kita bisa menggunakan argumen ini untuk menyesuaikan panjang maximumnya sesuai dengan kebutuhan.
  • unique. Field yang diberi opstion ini, maka isinya tidak boleh sama. Options ini biasa sering digunakan pada primary key. Namun kita juga bisa menggunakannya pada field type lain.

Masih ada lagi beberapa field option yang lainnya, untuk lebih lengkapnya bisa dibaca pada dokumentasi resmi django project.

Back to top

4) Field Type

Field Type yaitu type field yang digunakan pada setiap kolom database. Disetiap tabel database yang dibuat dari proses models.py, maka secara otomatis kolom id akan dibuat sebagai primary key dan auto increment. Jadi field (id) ini kita tidak perlu membuatnya lagi.

Field Type didjango mewakili dari field type yang dimiliki oleh software database. Beberapa Field type yang ditulis di sini adalah yang mungkin juga sering digunakan.

  • IntegerField (INT), ini adalah field INT pada database seperti MySQL. beberapa yang juga menggunakan tipe bilangan bulat adalah big auto field, big integer field (BIGINT) dan lainnya.
  • BooleanField sama halnya dengan BOOLEAN pada MySQL atau yang lainnya yang memiliki nilai TRUE dan FALSE.
  • CharField mewakili VARCHAR, ini adalah string based dan membutuhkan options max_length. Untuk besaran max_length bisa berbeda ukuran maksimumnya sesuai dengan database yang digunakan.
  • DateField (DATE) dan DateTimeField (DATETIME), field type ini memiliki argumen optional yaitu auto_now yang jika menggunakan ini maka setiap field dilakukan perubahan maka akan mengambil tanggal saat field diubah. Dan argumen auto_now_add akan mengambil tanggal saat field itu dibuat, dan data pada field dengan argumen auto_now_add tidak berubah meski sudah diedit. Keduanya tidak bisa digunakan pada satu field
  • FileField dan ImageField, digunakan untuk field upload file dan juga mengunggah gambar pada ImageField. Pada ImageField ini mewarisi atau menginherit dari method FileField dengan validasi objek yang diupload adalah gambar. Keduanya memiliki options upload_to yang untuk menentukan lokasi direktory tujuan upload.
  • EmailField ini sebenarnya bertype VARCHAR, hanya saja di django sudah menggunakan validasi email. Dan kita tidak perlu lagi membuat email validator. Gunakan saja EmailField untuk input berupa email. Juga ada SlugField dan URLField yang juga bertipe VARCHAR dengan tambahan validasi yang sudah disediakan oleh Django sesuai dengan tujuannya.
Back to top

5) Relationalship Field

Di Django juga mendukung penggunaan database relationalship, pada field yang akan dihubungkan dengan tabel database lain bisa menggunakan field type ForeignKey. yang juga memiliki argumen on_delete, limit_choices_to, related_name, related_query_name, dan to_field

Back to top

6) Akhir Kata

Dengan menggunakan Django kita telah mengurangi untuk membuat beberapa komponen dalam membuat website. Karena memang sudah banyak komponen tinggal pakai yang tersedia. Mari teman-teman semua terus belajar membuat web dengan Python menggunakan web framework Django.

Back to top