MOM ile Django Verisi Serileştirin

04 Haziran 2021

Django için Model Object Mapper

django  python  serialization

Model Object Mapper veritabanı dizilerini serileştirip kolay ekleme ve düzenleme yapmanızı sağlayan bir Django komut satırı aracıdır.

Model Object Mapper, ya da kısaca MOM, veritabanı girdilerini sabit dosyalar üzerinden ekleyip güncelleyen bir Django komut satırı aracıdır. İlişkisel alanları (relational fields) destekler ve Django uygulamaları ile değişiklik gerektirmeden kullanılabilir. MIT Lisansı ile lisanslanmış, özgür ve açık kaynaktır.

Giriş

MOM kişisel veya gizli veri setleriyle uğraştığınız son kullanıcı dostu girdi gerektirmeyen iş akışınızın verimini arttırır. Her çalıştırdığınızda veritabanınızı eşitleyen kullanması kolay bir serileştirme mekanizması sağlar.

Kullanımı

Bu bölüm MOM'un en yararlı özelliklerin bazılarını açıklamaktadır. Her şeyi detaylıca anlatan kullanım kılavuzunu ve hızlı başlangıç rehberini burada bulabilirsiniz:

Modellere Dayalı Modelleme

MOM'un Django modellerimizi tanıması için ilk önce Ana MOM Dosyası denilen dosya içinde onları nasıl kullanacağımızı belirtiyoruz. O dosyayla hangi dosyaların hangi modellere işaret ettiğini ve ilişkili alanları nasıl ele alacağımızı MOM'a anlatıyoruz.

Konuyu açıklamak için, aşağıdaki modele sahip olduğumuzu varsayalım:

# Dosya: home/models.py

from django.db import models

class Post(models.Model):
    slug = models.SlugField(primary_key=True, )
    title = models.CharField(max_length=100, )
    date = models.DateTimeField()
    content = models.TextField()

Şimdi, Ana MOM Dosyası içinde şunları yapabilirsiniz:

# Dosya: mom_data/mom.yaml

mom:
    map:
        post:
            model: home.models.Post
            lookupField: slug

Burada mom anahtarı içindeki map anahtarı MOM'a home.models.Post modelini nasıl ele alması gerektiğini söyleyen post anahtarını tanımlamaktadır. Bunu takiben, MOM, adları post ile başlayan ve home.models.Post modelinin slug alanına atanacak değerle devam eden ve son olarak MOM dosya formatı ile biten dosyaları bulur. Bu üç değeri bir araya getirdiğimizdeyse söyle bir şey elde ederiz: post.slug-alani-degeri.mom.yaml.

Nesnelerin İçi

Bir Ana MOM Dosyası oluşturduğumuza göre artık nesnelere (veya serileştirme dosyalarına) odaklanabiliriz. Bu dosyalar içerisinde veritabanı satırlarını hem oluşturmak hem de değiştikçe güncellemek için çok basit bir şekilde temsil edeceğiz.

Şimdi bahsettiğimiz post.slug-alani-degeri.mom.yaml dosyasını oluşturduğumuzu varsayalım:

# Dosya: mom_data/post.slug-alani-degeri.mom.yaml

field:
    title: Harika Bir Gönderi
    date: 2021-02-23 10:25:00+3
    content: Bu harika bir gönderidir

Beklendiği üzere, slug alanın değeri dosya adından geldiği için slug-alani-degeri'dir.

Şimdi şunu çalıştırabilirsiniz:

$ ./manage.py mom

Sonuç olarak, MOM mevcut bir satırı sorgulamak için slug alanını ve değerini kullanacak ve eğer varsa, MOM, alanları değişiklikleri bulmak için karşılaştıracak ve bir değişiklik varsa satırı güncelleyecektir. Mevcut bir satır yoksa, MOM veritabanında yeni bir satır oluşturacaktır.

Burada kullanabileceğiniz bir kullanışlı özellik de, alan adından sonra bir boşluk ekleyerek etkinleştirebileceğiniz seçeneklerdir. Örneğin, bir markdown dosyasıyla çalışıyorsanız ve onu content alanı için değer olarak kullanmak istiyorsanız şunu yapabilirsiniz:

# Dosya: mom_data/post.slug-alani-degeri.mom.yaml

field:
    # ...    
    content file: content.md

ve content.md dosyası içerisinde:

[comment]: # Dosya: mom_data/content.md

Bu harika bir gönderidir.

Bu şekilde YAML dosyalarının haricinde farklı dosya biçimleriyle de çalışabilirsiniz.

MOM şu anda kullanabileceğiniz ve belgelerde ayrıntılı olarak açıklanan bunun gibi birçok özelliğe sahiptir. İlişkisel alanlar bir göz atmak için iyi bir neden olabilir.

Sonuç

MOM sağladığı esneklikle iş akışınızı iyileştirebilir ve birçok farklı şekilde faydalı olabilir.