2011-06-29 23 views
7

Django'da models.py'ye model sınıfı eklerken, neden tanımladığımız alan değişkenleriyle kendimizi kullanmıyoruz? Kendi alan değişkenlerini kullanmamaları, onların yerine sınıf değişkenleri yaparlar.Django Modeli sınıflarında kendini kullanma

+0

... ne? Ne demek istediğinin birkaç örneğini ekleyebilir misin? Çünkü seni takip ettiğimden emin değilim ... – eternicode

cevap

8

Django, sağladığınız sınıf tanımına göre gerçek sınıfı oluşturmak için metaclasses kullanır. Özetle, model sınıfınızın somutlaştırılması üzerine, meta sınıf, model alan tanımlarınızdan geçecek ve uygun niteliklere karşılık gelen bir sınıf döndürecektir.

Sorunuzu doğrudan yanıtlamak için, örnek değişkenler yerine (object.self) sınıf değişkenleri kullanmak, meta sınıfın, sınıf özniteliklerini ilk kez başlatmaya gerek kalmadan denetlemesine olanak tanır.

fazla bilgi için

, the source bir göz ve aşağıdaki belgeler vardır:

+1

Yaklaşık 4 yıl önce kendime benzer bir soru sordum, bu yüzden 'django/db' kodunun içine girdim. Çeşitli seviyelerde aydınlatıcıydı; metaclass kullanımında bir Master Sınıfı. –