Django Model – Model dan Database Overview

Pendahuluan

Secara sederhana, database digunakan untuk menyimpan informasi yang akan kita tampilkan pada website.

Saat ini, database ada dua macam yaitu : SQL dan NoSQL.

Sederhananya, SQL database berbentuk tabular (seperti spreadsheet), sementara NoSQL menyimpan data dalam format key/value (seperti python dictionary).

Pembahasan mengenai database diperlukan tutorial bahkan satu buku terpisah, jadi tidak akan dibahas mendetail disini. Kita juga tidak akan membahas mana yang lebih baik SQL atau NoSQL, karena keduanya memiliki kelebihan dan kekurangan masing-masing, tergantung kebutuhan project Anda.

Yang perlu diperhatikan adalah, Django bekerja sangat baik dengan SQL Database, contohnya MySQL, SQLite, PostgreSQL dan lainnya.

Django bekerja dengan SQL engine yang umum digunakan, jadi merubah SQL engine cukup dilakukan dengan menggubah settings.py, kita tidak perlu mengubah code yang telah dibuat.

Pada tutorial ini kita akan gunakan SQLite, karena sudah terinstall bersama dengan Python. (Untuk kesederhanaan tutorial). Karena tujuan tutorial ini adalah menggunakan Django Model, database engine mana yang digunakan, tidak akan masalah.

Walaupun SQLite adalah skala kecil dari sql engine, namun cukup bekerja dengan baik. Untuk informasi kapan SQLite cocok digunkan, lihat di https://sqlite.org/whentouse.html

Model dan Database

Django model didefinisikan dalam file models.py (baik untuk project atau app scope).

Models class akan dikonversi dari Python code kedalam SQL Commands. Pendekatan ini mempermudah bekerja dengan database.

Membuat Model mirip dengan membuat table pada database. Setiap database akan menggunakan table untuk menyimpan data. Dalam table akan terdapat column yang memiliki tipe data tertentu.

Berikut contoh models.py yang berkolerasi dengan table Person.

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

Code diatas akan di convert secara otomatis menjadi

CREATE TABLE myapp_person (
  "id" serial NOT NULL PRIMARY KEY,
  "first_name" varchar(30) NOT NULL,
  "last_name" varchar(30) NOT NULL
);

Berikut Key Concepts dari Django Model

  • Diturunkan dari models class.
  • Menggunakan fields untuk mendefinisikan tipe data dan data constraints, contoh constraints adalah max_length, atau unique = True.

Django models juga dapat mengatur relasi antar table. Berikut contoh models Album berelasi dengan Musician (digunakan models.ForeignKey untuk mengatur relasi).

from django.db import models

class Musician(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    instrument = models.CharField(max_length=50)

class Album(models.Model):
    artist = models.ForeignKey(Musician, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    release_date = models.DateField()
    num_stars = models.IntegerField()

Sampai disini kita sudah membahas konsep dari Models dan Database, pada modul selanjutnya kita akan mulai belajar membuat models pada project.

Sharing is caring:

Leave a Comment