0% menganggap dokumen ini bermanfaat (0 suara)
38 tayangan

Modul 5 Admin Panel Dan Database Model

Bab 5 membahas admin panel dan database model di Django. Terdapat penjelasan tentang cara mengaktifkan admin panel dengan menggunakan perintah python manage.py migrate dan python manage.py createsuperuser. Kemudian membuat model database baru untuk tabel Customer, Product, dan Order di file models.py lalu meregistrasikannya di admin.py agar tampil di admin panel.

Diunggah oleh

Moh. Irfan Efendi
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
38 tayangan

Modul 5 Admin Panel Dan Database Model

Bab 5 membahas admin panel dan database model di Django. Terdapat penjelasan tentang cara mengaktifkan admin panel dengan menggunakan perintah python manage.py migrate dan python manage.py createsuperuser. Kemudian membuat model database baru untuk tabel Customer, Product, dan Order di file models.py lalu meregistrasikannya di admin.py agar tampil di admin panel.

Diunggah oleh

Moh. Irfan Efendi
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 12

BAB 5

ADMIN PANEL DAN DATABASE MODEL

5.1 Admin Pane

Pembahasan kali akan ada 2 materi, pertama admin panel dan database model. Kedua
pembahasan tersebut saling berkaitan, pembahsan pertama Admin panel, pada materi
sebelumnya telah membahas cara menampilkan admin yaitu: http://localhost:8000/admin/, maka
hasilnya:

Gambar 5.1 Login Admin Django

Pertanyaan pertama pasti tentang bagaimana cara mendapatkan username dan password-
nya? Tapi sebelumnya jangan lupa masuk ke virtul env-nya, secara logika ketika login pasti ada
table yang terdiri dari field username, password, alamat dan lainnya. Ya, pada django sudah
terdapat table yang namanya users dan database-nya secara default menggunakan SQLite,
database tersebut bisa dirubah sesuai keinginan tanpa merubah kode. Hal tersebut sudah
dijelaskan pada awal pengenalan tentang Django, cuman mempertegas pembahasan, salah satu
keunggulan Query Django menggunakan ORM (Object relational Model), sifat ORM relasi
object sehingga Django multi database. Kembali ke table users, terdapat dua cara memangil
table, seperti kode berikut:

Kedua kode di atas diketik di git bash dimana sudah terarah pada project-nya.
python manage.py makemigrations

Kode di atas untuk membuat table, pada Django table di buat pada models.py yang ada
di app-nya.
python manage.py migrate

Kode di atas untuk mengaktifkan table yang sudah kita buat, karena table users sudah
ada maka cukup ketik kode di atas untuk menjalakan admin panel pada Django. Silakan ketik
kode di atas pada dan setelah aktif berikutnya akan di atur username dan password-nya, hasil
dari penggunaan kode python manage.py migrate sebagai berikut:

Gambar 5.2 Pengaktifkan users dengan migrate


Memanggil table users telah selasai, berikutnya ketik di git bash, setelah users
diaktifkan, kemudian ketik di git bash : python manage.py createsuperuser, untuk sistem
operasi linux, mac dan lainnya, jika windows winpty python manage.py createsuperuser
Silakan jawab semua pertanyaan untuk mengaktifkan admin panel, seperti gambar berikut yang
diisi:

Gambar 5.3 Menjawab pertanyaan untuk admin panel

Isian password di atas harus terdiri dari huruf dan angka serta lebih dari 5 karekter.
Admin panel milik Django sudah aktif, untuk pertama kali mengaktifkan admin-nya urutannya:
- python manage.py migrate
- winpty python manage.py createsuperuser

Akan tetapi beda halnya jika membuat table langkanya, python manage.py
makemigrations untuk membuat table, mengaktifkan dengan cara python manage.py migrate.
Silakan jalankan kemudian di web browser ketikan http://localhost:8000/admin, kemudian
masukan username dan password-nya yang sebelumnya sudah dibuat, maka tampilan utama
admin-nya sebagai berikut:

Gambar 5.4 Tampilan utama admin panel Django

Terdapat users dan groups, untuk menambah akun tinggal klik users dan pilih ADD users
dan seterusnya, sebagai berikut:

Gambar 5.5 Tambah users

Django admin bisa dikelolah sendiri, tinggal klik link sesuai dengan keguaannya.
5.2 Database model

Admin panel sudah aktif selanjutnya, akan buat tabel dengan nama Custumer dengan
isian field-nya: name (VarChar(200)), phone(VarChar(200)), email VarChar(200) dan
date_created(Tanggal otomatis mengambil dari tanggal sekarang, waktu penyimpanan). Field-
field tersebut di letakan di app data/models.py. Lebih jelasnya seperti berikut:

Tempat app data/models.py

from django.db import models

# Create your models here.


class Custumer(models.Model):
name = models.CharField(max_length=200, blank=True, null=True)
phone = models.CharField(max_length=200, blank=True, null=True)
email = models.CharField(max_length=200, blank=True, null=True)
date_created= models.DateTimeField(auto_now_add=True, null=True)

Pembuat table pada Django melalui models.py yang ada pada app, dengan menggunakan
kode class, ingat ketika membuat class awal huruf harus menggunakan huruf kapital seperti kode
di atas. Tidak kalah pentingnya perhatikan identasi-nya, identasi sudah dijelaskan pada
pertemuan sebelumnya. CharField sama dengan VarChar (Penerima angka dan huruf),
max_length adalah maksimal ukurannya, blank bernilai True dan False, jika nilainya True
maka boleh kosong dan False kebalikannya. Null artinya jika True boleh nilainya kosong dan
False tidak boleh dan auto_now_add, Nilai True maksudnya menambahkan tanggal sekarang
ketika dieksekusi, penuliasan underscore _ secara otomatias menjadi spasi jika dijalankan pada
baik form ataupun admin Django-nya. Dokumentasi situsnya seperi dibawah berikut, silakan
belajari dan pahami aturannya:

https://docs.djangoproject.com/en/3.1/ref/models/fields/ Atau

https://docs.djangoproject.com/en/3.1/topics/forms/modelforms/

Membuat table dengan cara ketikan dibawah berikut:


python manage.py makemigrations

Gambar 5.6 Hasil makemigrations


Otomatis ketika melakukan makemigrations, akan menghasilkan satu file, seperi di atas,
isi dari field tersebut seperti dibawah berikut:

Gambar 5.7 File makemigrations

File tersebut jangan diubah, atau dihapus, jika mau diubah melalui models.py-nya saja.
Kemudian untuk mengaktikanya ketik : python manage.py migrate, maka table Custumer sudah
aktif. Kedua kode tersebut makemigrations dan migrate digunakan setiap menambah,
mengurangi, mengupdate dan menghapus table, akan tetapi table Custumer pada admin panel
tidak muncul, hal ini disebabkan table tersebut belum didaftarkan, tempat pendaftaranya ada di
admin.py dengan app yang sama di models.py. Isi admin.py seperti berikut:

File di Folder data/admin.py

from django.contrib import admin

# Register your models here.


from .models import Custumer

admin.site.register(Custumer)

Penjelasan:

from .models import Custumer

Tanda titik menandakan bahwa file models yang dipanggil dalam satu folder yaitu folder app
data, Kemudian lihat hasilnya:
Gambar 6.8 Register Custumer

Gambar di atas DATA adalah nama app-nya dan Custumers adalah nama table-nya.
Silakan Add untuk menambahkan dan isi semuanya, hasilnya seperti berikut:

Gambar 5.9 Isian data default Django

Hasil inputannya masih berikan nama table object (Custumer object(1)), akan lebih baik
tampilannya bisa disesuaikan dengan keinginan, contoh object tersebut terisi sesuai dengan
name, maka tambahkan kode models.py sebagai berikut:

File di Folder data/ models.py

from django.db import models


# Create your models here.
class Custumer(models.Model):
name = models.CharField(max_length=200, blank=True, null=True)
phone = models.CharField(max_length=200, blank=True, null=True)
email = models.CharField(max_length=200, blank=True, null=True)
date_created= models.DateTimeField(auto_now_add=True, null=True)

def __str__(self):
return self.name
Kode di atas menjelaskan pada class terdapat fungsi (def), karena fungsi tersebut
milikinya class, maka posisnya lebih ke dalam ke kiri, kembali lagi dengan indentasi lagi. Hasil
dari kode di atas seperti berikut:

Gambar 5.10 Hasil ubah object field Django

Sudah sesuai harapan, dari kode di atas, jika angka yang akan ditampilkan str tinggal
diganti ke int. Menampilkan field lebih dari satu terdapat dua cara pertama menggunakan:

return f”{self.nama_field1}-{self.nama_field1}-{self.nama_fieldn}” atau bisa dengan


cara return '%s, %s' % (self.nama_field1, self. nama_field1) untuk lebih jelasnya dipraktekan
dan lihat hasilnya. Berikutnya akan ditambah silakan tambahkan beberapa table, tempat
penambahakannya ada pada models.py, tambahkan Product dan order detailnya:

Product

name (VarChar (200))

price (Integer)

category (ComboBox (Indoor, Out Door ))

description (VarChar (200))

date_created (DateTimeField)

Order

status (ComboBox (Pending,Out for delivery, Delivered ))

date_created (DateTimeField)

Interger pada price tidak memiliki batasan ukuran seperti di bawah kemudian makemigrations
dan migrate seperti:
File di Folder data/ models.py

from django.db import models

# Create your models here.


class Custumer(models.Model):
name = models.CharField(max_length=200, blank=True, null=True)
phone = models.CharField(max_length=200, blank=True, null=True)
email = models.CharField(max_length=200, blank=True, null=True)
date_created= models.DateTimeField(auto_now_add=True, null=True)

def __str__(self):
return self.name

class Product(models.Model):
CATEGORY=(
('Indoor', 'Indoor'),
('Out Door' , 'Out Door'),
)
name = models.CharField(max_length=200, blank=True, null=True)
price = models.IntegerField(blank=True, null=True)
category = models.CharField(max_length=200, blank=True, null=True, choices=CA
TEGORY)
description = models.CharField(max_length=200, blank=True, null=True)
date_created= models.DateTimeField(auto_now_add=True, null=True)

def __str__(self):
return self.name

class Order(models.Model):
STATUS=(
('Pending', 'Pending'),
('Out for delivery' , 'Out for delivery'),
('Delivered', 'Delivered'),
)
date_created = models.DateTimeField(auto_now_add=True, null=True)
status = models.CharField(max_length=200, null=True, choices=STATUS)

def __str__(self):
return self.status

Jangan lupa makemigrations, migrate dan register di admin.py kemudian jalan project-nya
seperti biasaya, lihat hasilnya di admin panel, sudah sesuai dengan tambahkan table dan field
yang diinginkan. Cara mendaftarkan di admin.py karena lebih dari satu
from .models import *, selengkapnya seperti berikut:

File di Folder data/admin.py

from django.contrib import admin


# Register your models here.
from .models import *

admin.site.register(Custumer)
admin.site.register(Product)
admin.site.register(Order)

Silakan cek kembali hasilnya di admin panel, selanjutkan akan membahas tentang
Database Relationships yaitu: One To Many dan Many to Many, maka dari itu kode di atas
harus di coba. Tapi sebelumnya ada pertanyaan kenapa harus pakai bahasa Inggis dalam
menuliskan nama table-nya, apakah bahasa Indonesia tidak bisa? Jawabannya bisa, semua
bahasa bisa, akan tetapi di sistem Django secara otomatis, table akan menjadi plural artinya
ditambah s, ketika product menjadi products, ketika order menjadi orders dan seterunya, jika
tidak percaya silakan lihat hasil dari tambah table-nya.

Gambar 5.11 Hasil Table Plural

Dan pertanyaan selanjutnya apakah bisa tanpa menambah s, contaoh gimana kalau kelas,
kan menjadi tidak bagus kalau kelass. Jawabannya adalah bisa, pada models.py dan arahkan ke
class yang akan dihilangkan tambahan s-nya, kodenya sebagai berikut:

class Meta:
verbose_name_plural ="Kelas"
Silakan jalankan dan coba, pasti tambahan s-nya sudah hilang. Dan juga bisa mengganti nama
label pada Django admin contoh seperti berikut:

gambar= models.ImageField(upload_to='gambar/berita', blank=True, null=True, verbo


se_name="Gambar (1200 x 700)"), dari kode di atas otomatis tulisan labelnya menjadi
Gambar (1200 x 700).

5.3 Resize fields in Django Admin


Maksud dari text di atas adalah membuat field atau inputan menjadi lebih besar dari yang
biasaya atau default-nya. Pertama tambahkan form dan pilih inputan yang digunakan, pada
admins.py kode seperti berikut:

from django.forms import TextInput, Textarea, TypedChoiceField


from django.db import models

Inputanya seperti TextInput, Textarea dan lainnya sesuai sesuai kebutuhakan, kemudian
pada model tambahakan seperti berikut:

class Nama_modelAdmin(admin.ModelAdmin):

formfield_overrides = {
models.PositiveBigIntegerField: {'widget': TextInput(attrs={'size':'20'})
},
models.CharField: {'widget': TextInput(attrs={'size':'70'})},
}
Keterangan:

Nama PositiveBigIntegerField dan CharField menyesuaikan inputan yang


dibutuhkan. Otomatis inputan yang PositiveBigIntegerField dan CharField otomatis size
atau ukuranya berubah.

5.4 Lupa Password Admin Django

Lupa password sering terjadi, pada Admin Django terdapat dua cara. Pertama dengan
cara winpty python manage.py createsuperuser kemudian isi seperti di atas, secara
otomatis terdapat dua super user pada tabel user, catatan git bash pemanggilan sudah terarah
pada folder project-nya, contoh dua super user seperti gambar di bawah berikut:
Gambar 5.12 Dua super user

Cara kedua dengan kode change password, tapi syaratnya harus ingat username dan
seperti di atas git bash harus sudah terarah ke folder project yang akan diganti password-nya.
Kodenya winpty python manage.py changepassword <user_name>, supaya lebih jelas
perhatikan gambar berikut:

Gambar 5.13 change password Django

Silakan implementasikan jika lupa password, bebas menggunakan cara pertama atau
kedua.

Biasanya jika Aplikasi (Folder dan isinya semuany) dipindahkan ke komputer lain dan
terjadi error seperti berikut:

TypeError: argument of type 'WindowsPath' is not iterable - in django python [duplicate]

Hal tersebut terjadi karena setting database SQL lite-nya tidak otomatis mengarah ke
folder yang ada, maka dari itu setting.py-nya perlu pada bagian database-nya ubah seperti kode
berikut:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite1',
'NAME': str(os.path.join(BASE_DIR, "db.sqlite3"))
}
}
Penjelasan:
os.path.join(BASE_DIR
Kode tersebut secara otomatis akan mengarah pada folder yang sekarang ditempati. Atau
bisa digunakan sejak awal untuk menghindari error ketika direktorinya diubah.

Anda mungkin juga menyukai