Python Django Serisi #3 | Veritabanı & Models & Admin
Hemen konuya geçelim. Veritabanına model oluşturmadan önce, admin paneline giriş yapabilmek için kullanıcı oluşturmak gerekiyor. Önce bir admin panelini görelim.
Yönetici Hesabı Oluşturma
Aşağıdaki komut ile super useri oluşturalım.
python manage.py createsuperuser
Oluşturduğumuz bilgiler ile http://127.0.0.1:8000/admin/ adresinden admin paneline giriş yapabiliriz.
Veritabanı Model Oluşturma — Models.py
Django’nun içinde veritabanı olarak SQLite hazır geliyor. Bizde bu düzeni bozmadan SQLite’dan devam edeceğiz.
Django veritabanı ORM yapısını kullanmaktadır. Uygulama(account) dosyamızın içinde bulunan Models.py dosyasını açalım.
Veritabanında tutacağımız verileri düşünelim.
- Fotoğrafın çekildiği bölge (CharField)
- Fotoğraf açıklaması (TextField)
- Fotoğrafın kendisi (ImageField)
- Fotoğrafın kategorisi (CharField)
Yani bize veritabanı tablomuzda 4 sütun gerekiyor. O zaman modellemeye başlayalım.
Galeri adında sınıf oluşturalım. Sınıfa verdiğimiz isim tablo ismi olacaktır.
from django.db import models
from random import choices
class Galeri(models.Model):
bolge = models.CharField("Bölge", max_length=45, null=False)
resim = models.ImageField("Resim", upload_to="uploads", null=False)
aciklama = models.TextField("Açıklama", null=True, blank=True)
kategori = models.CharField("Kategori", max_length=25, choices=[('0', 'Yer'), ('1', 'Gök'), ('2', 'Derya')])
# Admin panelinde verilerin görünen adı
def __str__(self):
return self.aciklama
# Admin panelinde görünecek olan Modelin adı
class Meta:
verbose_name_plural = "Galeri"
Modelimizi oluşturduk. Şimdi makemigrations yapıp veritabanı için hazır hale getirelim.
python manage.py makemigrations
ve ardından migrate işlemi ile veritabanını güncelleyelim.
python manage.py migrate
Artık modelimizi veritabanında kullanabiliriz. Ancak Admin paneline girersek eklediğimiz modeli göremeyeceğiz. Bu yüzden admin.py dosyasında bir kaç satır kod eklememiz gerekiyor.
Verilerin Admin Panelinde Görünürlüğü ve Kontrolü
Artık verileri admin panelinden kontrol etme vakti geldi. ‘models.py’ dosyasını kapatıp, ‘admin.py’ dosyasını açalım. ‘admin.py’ dosyasında, panel üzerinde görünecek verileri ayarlıyoruz. İlk önce oluşturduğumuz modeli import etmemiz gerekiyor.
from django.contrib import admin
from django.db import models
from .models import Galeri
class LISTELE(admin.ModelAdmin):
list_display = ("bolge", "resim", "aciklama", "kategori")
list_editable = ("resim", "kategori",)
select_related = "bolge",
admin.site.register(Galeri, LISTELE)
Yukarıdaki koddan kısaca bahsedecek olursak;
- list_display: Görünmesini istediğimiz verileri listeler,
- list_editable: Listelenen verileri hızlı düzenlemeyi sağlar,
- select_related: Selectbox(kategori seçimi) seçeneğini kullanır.
Admin paneline tekrar girip bakarsak Galeri adında modelimiz görünecektir. add butonuna tıkladığımız zaman veri ekleme sayfasına yönlendirecektir. Verileri girip kayıt edelim, bakalım olmuş mu?
Tüm adımları doğru yaptıysak sorunsuz kayıt etmelidir :) Proje dosyamızda bulunan uploads/uploads dizini içerisine yüklediğimiz resim gelecektir. Buraya kadar sorun görünmüyorsa, artık diğer konuya geçebiliriz.
Bir sonraki yazımda, veritabanında bulunan verileri web sitemizde görünür yapacağız.
Görüşmek üzere. 🙋♂️