Django Tutorial 6 : Models

¬† Seperti dijelaskan pada tutorial sebelumnya, yakni tutorial ke-2, dimana kita melakukan setup untuk koneksi database dan melakukan instalasi default modul dari django seperti module authentication, session dan seterusnya. Didalam tutorial tersebut kita juga bisa melihat adanya perintah “sync db” yang mana perintah ini akan melakukan proses pembuatan tabel di dalam database secara otomatis.

Didalam tutorial yang ke-5, kita juga mempelajari mengenai views.py dan urls.py, dimana setiap kita membuat applikasi didalam instance django, maka secara otomatis kita juga di beri 1 file views.py dan urls.py. Sebenarnya selain kedua file ini, masih ada file lain yang secara otomatis diberikan kepada kita, yakni file models.py.

File models.py ini dipergunakan untuk melakukan berbagai proses kegiatan yang berkaitan dengan data. Bagaimana cara mengakses data, bagaimana validasinya, serta bagaimana relasi antar data tersebut. Jadi file models.py ini juga di kenal sebagai layer data. Django menggunakan file models.py ini untuk mengeksekusi perintah SQL dan mengeluarkan struktur data python yang berisikan data data dari tabel database kita.

Tutorial kita kali ini, akan membahas mengenai Models di project pawang ini secara garis besar.

Tutorial :

  1. Buka file models.py dan copy paste kode kode berikut :
    from django.db import models
    from django.db import models, connection, transaction
    import datetime
    
    class Menu(models.Model):
        id = models.IntegerField(max_length=18, primary_key= True)
        #parent_menu_id = models.IntegerField(max_length=18, blank=True, null=True)
        parent_menu_id = models.ForeignKey('self', blank=True, null=True, related_name='children', db_column="parent_menu_id")
        name = models.CharField(max_length=64)
        link = models.CharField(max_length=32)
        status = models.IntegerField(max_length=1, default=0)
        level_degree = models.IntegerField(max_length=18, blank=True, null=True)
        arrange_no = models.IntegerField(max_length=18, blank=True, null=True)
        created_date = models.DateTimeField('created date', auto_now_add=True)
        last_update = models.DateTimeField('last update date', auto_now=True)
        def __unicode__(self):
            return u"%s"%(self.name)
        class Meta :
            db_table='menus'
    
    

    Kemudian simpan perubahan ini.

  2. Kemudian dari prompt atau konsole kita jalankan perintah sebagai berikut :

    $ python manage.py syncdb

    Perintah ini akan melakukan sinkronisasi antara applikasi kita dengan database. Perintah ini juga akan melakukan pengecekan terhadap tabel tabel yang ada di database untuk di bandingkan dengan file models.py. Apabila ada perubahan data di dalam file models.py, maka django akan menyesuaikannya.
  3. Untuk melihat apa efek dari perintah diatas, mari kita buka database pawang di dalam postgresql. Anda dapat melakukannya melalui PGAdmin III atau tool database browser yang lainnya.
    Apakah anda bisa menemukan adanya tabel baru disana ? tabel menus ? Jika iya, berarti anda berada di jalur yang benar.
  4. Berikutnya kita bisa coba lagi untuk model yang lainnya. Buka file models.py dan tambahkan baris perintah di bawah ini :
    class Currency(models.Model):
        id = models.CharField(max_length=3, primary_key=True)
        name = models.CharField(max_length=32)
        symbol = models.CharField(max_length=3)
        status = models.IntegerField(max_length=1, default=0)
        created_date = models.DateTimeField('created date', auto_now_add=True)
        last_update = models.DateTimeField('last update date', auto_now=True)
        def __unicode__(self):
            return u"%s"%(self.name)
        class Meta :
            db_table='currencies'
            permissions = (
                ("can_print", "Can print currency"),
                ("can_approve", "Can approve currency")
            )
    
  5. Lakukan kembali perintah sync db seperti sebelumnya, dan lihat hasilnya di dalam database.

    Kang kok sintaknya mirip dengan perintah CREATE TABLE di SQL ya ? Iya jelas, wong models inikan layer data, jadi gampangannya 1 klas itu mewakili 1 tabel

  6. Nah dari dua class model tersebut, kita bisa melihat bagaimana django membuatkan tabel secara otomatis di dalam database. Bagaimana django menginterpretasikan python class menjadi suatu tabel. File models.py ini bekerja di level applikasi, artinya 1 applikasi didalam instance django akan memakai 1 file models.py.Sama seperti tutorial yang ke-5, file models.py ini juga akan berkembang seiring berkembangnya applikasi, kondisi file models.py ini akan sama dengan file views.py yang suatu saat nanti akan perlu di ubah menjadi suatu paket dan kita akan mempelajari hal ini nanti.
  7. Nah apabila anda sudah dapat melihat dua tabel di dalam database yakni menus dan currencies, maka selamat, anda telah menyelesaikan tutorial ini. Untuk detail tutorial mengenai models, akan kita pelajari di kesempatan berikutnya.

Author: Nareswara

Ordinary People with eye glasses

Leave a Reply

Your email address will not be published. Required fields are marked *