Django

İleri Django ORM

Raw SQL, custom managers, query expressions, database functions, atomic transactions, select_for_update, race conditions, database routers

28 mülakat soruları·
Senior
1

Django'da raw SQL çalıştırmak için Model.objects.raw() ile connection.cursor() arasındaki temel fark nedir?

Cevap

Model.objects.raw() otomatik olarak eşlenmiş model örnekleri döndürür ve öznitelik erişimi ile ilişkiler gibi ORM avantajlarını korur. connection.cursor() ise tuple'lar içeren ham bir veritabanı cursor'ı döndürür; belirli bir modele bağlı olmayan sorgular için daha fazla esneklik sunar ancak sonuçların manuel olarak işlenmesini gerektirir.

2

Django'da modele doğrudan metot eklemek yerine custom Manager oluşturmanın temel avantajı nedir?

Cevap

Bir custom Manager, tablo düzeyindeki sorgu mantığını kapsüller; QuerySet ile metot zincirlemeye olanak tanır ve bu mantığı modelin kullanıldığı her yerde yeniden kullanılabilir kılar. Model metotları tek tek örnekler üzerinde çalışır. Manager ayrıca get_queryset() ile varsayılan QuerySet'i değiştirmeye de izin verir.

3

Django'da özel metotların zincirlenmesini sağlamak için bir custom QuerySet nasıl uygulanır?

Cevap

Zincirlemeyi sağlamak için QuerySet'ten miras alan ve self ya da filtrelenmiş bir QuerySet döndüren metotlara sahip bir sınıf oluşturun. Ardından custom QuerySet'i Manager.from_queryset() ile kullanın veya custom QuerySet döndüren get_queryset() içeren özel bir Manager tanımlayın. Bu, Model.objects.custom_method().filter() çağrısına olanak tanır.

4

Veritabanındaki bir sayacı race condition riski olmadan atomik şekilde artırmak için hangi Django ifadesi kullanılır?

5

transaction.atomic()'in işlevi nedir ve Django'da istisnaları nasıl ele alır?

+25 mülakat soruları

Bir sonraki mülakatın için Django'de uzmanlaş

Tüm sorulara, flashcards'a, teknik testlere, code review alıştırmalarına ve mülakat simülatörlerine eriş.

Ücretsiz başla