Açık Kaynak SistemlerBilişim ProfesyonelleriMakaleWeb UygulamalarıYazılım Geliştirme

Flask-MVC (Unit-2) MVC Model

Projeyi code first yaklaşımıyla geliştireceğimiz için öncelikle modellerimizi oluşturmalıyız. Örneğimiz bir kitap takip takip projesi olacak demiştik, şimdi buna göre modellerimizi oluşturmaya başlayalım. Örnek proje kısaltılmış bir proje olacak fakat eksik kısımlarını yazılardaki yönergeleri izleyerek siz rahatlıkla tamamlayabileceksiniz.

#baseModel.py
from app import db


class Base(db.Model):
    __abstract__ = True

    Id = db.Column(db.Integer, primary_key=True)
    Name = db.Column(db.String(30))
    date_created = db.Column(db.DateTime, default=db.func.current_timestamp())
    date_modified = db.Column(db.DateTime, default=db.func.current_timestamp(), onupdate=db.func.current_timestamp())

#book.py
from app import db
from app.models.baseModel import Base


class Book(Base):
    __table_name__ = 'book'
    AuthorId = db.Column(db.Integer,db.ForeignKey('author.Id'))



    def __init__(self, name, authorid):
        self.Name = name
        self.AuthorId = authorid


    def __repr__(self):
        return self.Id
#author.py
from app import db
from app.models.baseModel import Base


class Author(Base):
    __table_name__ = 'author'
    SurName = db.Column(db.String(30))

    books = db.relationship('Book', backref='Author', lazy='dynamic')

    def __init__(self, name, surname):
        self.Name = name
        self.SurName = surname

    def __repr__(self):
        return self.Id

baseModel.py : Bu model diğer modellerin temelini oluşturacak örnek projede her model classında mutlaka id name date_created ve date_modifeid alanları olacağı için bu alanlar baseModel’e eklendi. İsterseniz bu modeli daha da genişletebilir daraltabilir veya kullanmayabilirsiz

book.py ve author.py Base’den türetiyoruz. Bu modeller aynı zamanda migration için kullanılacak. Migration için sqlAlchemy’den faydalancaz. Buradaki db ifadesi app klasörü içerisindeki __init__.py’de bulunan db=SQLAlchemy satırından geliyor. __table_name__ = ‘book’ ifadesi ile database tarafında ilgili modeli taşıyacak olan tablo adını belirliyoruz. db.Column() ifadesi ile modeldeki field’ın database tarafındaki column özelliklerini belirliyoruz. db.ForeignKey ise tablolar arasında ilişki kurmak için kullandığımı ifade oluyor. Author tablosundan herhangibir kayıt book tablosunda kullanılması durumunda exception oluşacak ve kayıt silinmeyecektir. Modellerin construction ve database’e kayıt oluştuktan sonra tetiklenecek olan methodları yazıyoruz. Burada__repr__ ile kayıt oluştuktan sonra bize yeni oluşan id numarası döncek.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.