2465

Python ile Sıfırdan İleri Seviye Python Programlama

Django Models

Python Django dersleri serimizin bu bölümünde django model nedir ve hangi amaçla django modellerini kullanırız, öğrenelim.

Django Models

Python django web projelerinde veri tabanı ile çalışmak için django modellerini iyi bir şekilde anlıyor olmamız gerekiyor. Çünkü veri tabanı tablolarını django projesi tarafında modeller sayesinde oluşturuyoruz.

 

Peki neden veri tabanı kullanma ihtiyacımız var?

Örneğin; 

kategori_listesi = ["Web Geliştirme","Mobile Uygulama","Veri Analizi"]

bu şekilde bir kategori listesini bir python list verisi olarak sakladığımızda bilgiyi uygulama çalıştığı anda server belleğinde tutmuş oluyoruz. Dolayısıyla bu veri üzerine ekleme, güncelleme yaptığımızda kalıcı olmaz. Her uygulamamızı ziyaret eden bir kişi için bu verinin bir kopyası kullanılır. Dolayısıyla verinin kalıcı olarak bir dosyada saklanması gerekir. 

Veritabanı mantığını anlamak için aşağıdaki videoyu seyredebilirsiniz.

 

Django Model Tanımlama

Django modeli hangi uygulama ile alakalıysa o uygulama içerisindeki models.py dosyasında modellerimizi tanımlıyoruz. Resmi django models dökümanına ulaşmak için tıklayınız.

Projemizde Blog ve Category modellerini tanımlayalım.

Django modeli bir class olarak tanımlanır ve bu model sınıfı temel sınıf olarak models.Model sınıfından tüm özellikleri miras alması gerekir.

Eğer Python OOP (Nesne Tabanlı Programlama ) konusunda eksiklikleriniz olduğunu düşünüyorsanız tıklayınız.

class Category(models.Model):
    name = models.CharField(max_length=150)

Category modeli models.Model sınıfından tüm Model olma yeteneklerini kalıtım yoluyla alır. Name isminde bir property bilgisine sahiptir. Bu property veri tabanı tarafında bir kolona karşılık gelecektir ve maksimum alabileceği değer 150 karakter uzunluğundadır.

CREATE TABLE <uygulama_adi>_category (
    "id" serial NOT NULL PRIMARY KEY,
    "name" varchar(150) NOT NULL
);

Category modeli veri tabanı tarafında aslında yukarıdaki sql scriptinin çalışmasına neden olacaktır. Gördüğünüz gibi primary key bilgisi otomatik olarak tabloya dahil ediliyor. Script oluşturuldu ancak henüz uygulanmadı. Script'i uygulayarak veri tabanı içerisinde bu tablonun oluşturulmasını sağlamak için bir migrations oluşturmamız gerekir. Migrations konusunu bir sonraki dersimizde öğreneceğiz.

Şimdi ise Blog modelini ekleyelim.

class Blog(models.Model):
    title = models.CharField(max_length=200)
    image = models.CharField(max_length=50)
    description = models.TextField()
    is_active = models.BooleanField(default=False)
    is_home = models.BooleanField(default=False)

Blog modeli 5 farklı property değerine sahiptir. Burada tanımlanan property tipleri hem veri tabanı tablosundaki kolonların veri tiplerine hem de veri tipine uygun verinin kullanıcıdan alınmasını sağlayacak uygun bir html form elementine karşılık gelecektir. Örneğin; CharField() input text elementinin oluşmasını sağlarken TextField() textarea elementinin oluşmasını sağlayacaktır.

CharField, karakter bazlı veriler saklamak için kullanılır.

TextField, daha büyük uzunluktaki karakter bazlı veriler saklamak için kullanılır. Textarea html form etiketinin oluşmasını sağlar.

BooleanField, true/false verisini saklar.

Tabi ki bu property tipleri haricinde tanımlanabilecek property tipleri oldukça fazla dolayısıyla bu listeyi resmi django models makalesi üzerinden incelemenizi tavsiye ederim.

default=False, tanımlamamızdaki sebep ise is_active ya da is_home alanlarına kullanıcı bir bilgi göndermezse False değeri aktarılır. Yani bir blog eklediğimizde sadece title, image ve description bilgisini veri tabanına göndermemiz yeterlidir. Diğer alanlar için False değeri otomatik olarak eklenecektir.

Peki bu aşamaya kadar django modellerini nasıl tanımlayacağımızı öğrendik ancak modellere karşılık gelen veri tabanı tablolarını henüz oluşturmadık. Bir sonraki dersimizde django migrations ile modellere karşılık gelen tabloları nasıl oluşturacağız, öğrenelim.


Kurs Sayfasına Git  
Paylaş