Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitim içeriği olup, Django framework'de nested fields kullanarak create işlemi yapma sürecini adım adım göstermektedir.
- Video, product ve product materyal tabloları arasındaki ilişkiyi kullanarak, yeni bir product verisi eklerken bu product'a ait materyalleri de aynı anda nasıl ekleyebileceğimizi anlatmaktadır. İçerikte, raw data gönderme, clean metodunu override etme, debugger kullanarak veri akışını inceleme ve create metodunda nested fields'ı nasıl işleyeceğimiz detaylı olarak gösterilmektedir. Video, bir örnek request ile başlayıp, hata mesajlarının nasıl çözüleceği ve sonunda başarılı bir create işlemi gerçekleştirilmesiyle sonlanmaktadır.
- Django Framework'de Create İşlemi
- Bu videoda Django framework'de create işlemi gösterilecek, yani product verisine yeni bir product eklerken product materyallerini de product materyal tablosuna eklemeye çalışılacak.
- API product adresine geldiğimizde product materyali menü alanı olarak eklenmiş.
- Yeni product eklemeye çalıştığımızda Django, product materials alanının gerekli olduğunu hata mesajı olarak gösteriyor.
- 00:40Product Materyalleri Ekleme
- Raw data kısmına yeni product'ın ismini (test product) ve product materials alanını ekliyoruz.
- Materyal name ve product name alanları read-only olarak tanımlandığı için göndermemize gerek yok, sadece materyal, rate ve product alanlarına göndermemiz gerekiyor.
- ID alanı default olarak read-only olarak tanımlıdır.
- 01:18Product Materyalleri İlişkisi
- Clean tarafında bir obje olarak materyal oluşturup, yeni oluşturacağımız products ile ilişkilendirmek istediğimiz materyalin ID'sini veriyoruz.
- Örneğin materyal 2'yi %80, materyal 3'ü %20 oranında test product ile ilişkilendirmek istiyoruz.
- Bu veriyi kopyalayıp post yaptığımızda, product materyals de product alanının gerekli olduğu hata mesajı alınıyor.
- 02:29Product Alanının Zorunluluğunu Kaldırma
- İlk yapmamız gereken şey product alanının gerekli olma durumunu yani bu zorunluluğu kaldırmak.
- Product alanını products redfield olarak product alanını source de product id olarak ayarlıyoruz.
- Bu şekilde request atıldığında product alanı doğru şekilde görünüyor.
- 03:25Nested Fields Hatası
- Post yaptığımızda Django, create işlemi yapmaya çalıştığımızda ve bu bir nested fields (iç içe alanlar) olduğu için hata mesajı veriyor.
- Product'ın product modası realizer'ın create metodunun override edilmesi gerekiyor.
- Set read only true dersek sadece product materyal alanını read-only görecek ve product'ı direkt ekleyecek, ancak bu istenmiyor.
- 04:39Create Metodunu Override Etme
- Create metodunu override ederek debugger ekliyoruz.
- Debugger kodu bulunduğu satırda durduruyor ve self.validated_data'ya bakarak gönderilen veriyi görebiliyoruz.
- Gönderilen data, test product ve product materyal seti olarak geliyor.
- 06:01Veriyi Python Formatına Dönüştürme
- Get realizer class metodunu override ederek request'i kontrol ediyoruz.
- Request'te product materyal materyal 2 rate 80, materyal 3 rate 20 olarak klein tarafından gönderildiğini görüyoruz.
- Validated data kısmına geldiğimizde, verinin dictionary tipinden Python'daki native veri formatlarına dönüştürüldüğünü görüyoruz.
- 07:50Kayıt İşlemini Gerçekleştirme
- Test product validated data'dan alıp yeni bir product olarak kullanabiliriz.
- Product materyal set içerisinden iki veriyi alıp product materyal model klasını kullanarak yeni product materyal kayıtları oluşturabiliriz.
- Product materyal set'i validate data'dan çıkarıp, new product oluşturup product objects create ile yeni product'ı oluşturabiliriz.
- 09:51Product Materyal Kayıtlarını Oluşturma
- Product materyal set set içerisinde iki adet obje var ve bunlar bir dizi içerisinde.
- For ile bu dizi içerisinde dönebilir ve product materyal object object create ile yeni product'a ait materyali ve rate'ini alabiliriz.
- Gönderilen materyal sayısı kadar product materyal oluşturulacak.
- 12:33Sonuç
- Post yaptığımızda yeni product başarıyla eklendi.
- Representation da sunumda crealizer'ın kullandığı alanlar gösteriliyor.
- Red-only kullandığımız alanlar için create işleminde sadece materyal ve rate'i klein tarafından alacağımızı belirtiyoruz.