'Django alanları s model olsun | Netgez.com
SORU
5 EYLÃœL 2010, Pazar


'Django alanları s model olsun

Django model dikkate alındığında, tüm alanları listesine çalışıyorum. _meta modeli öznitelik, ama meta önüne alt çizgi değil kullanarak _meta özniteliği, bir özel öznitelik olduğunu gösterir bunu yaparken bazı örnekler gördüm ve doğrudan erişilebilir olması gerekmez mi? ... Çünkü, örneğin, _meta düzenini gelecekte değişebilir ve istikrarlı bir API değil mi?

_meta bu kurala bir istisna değildir? Ve kullanmaya kararlı hazır yoksa kabul kötü uygulamaya erişmek için. Yoksa bir işlevi veya _meta özniteliği kullanmadan bir model alanları incelemek için başka bir yol var mı? Aşağıda bazı bağlantılar bu _meta özniteliği kullanarak nasıl yapılacağını gösteren bir liste

Herhangi bir tavsiye çok takdir ediliyor.

django object get/set field

http://www.djangofoo.com/80/get-list-model-fields

How to introspect django model fields?

CEVAP
5 EYLÃœL 2010, Pazar


_meta özel, nispeten istikrarlı. 1.3 veya 1.4 önce olabilecek bunu resmileştirmek, belge ve alt çizgi kaldırmak için çabalar var. Çaba bir sürü insan zaten kullanıyoruz çünkü işler geriye doğru uyumlu olduğundan emin olmak için yapılır düşünüyorum.

Eğer uyumluluk konusunda özellikle endişeleriniz varsa, bir model alır ve alanları döndüren bir fonksiyon yazın. Bu ise gelecekte bir şey değiştirmez, yalnızca bir işlev değiştirmek zorunda anlamına gelir.

def get_model_fields(model):
    return model._meta.fields

Bu Field nesnelerin listesini döneceğine inanıyorum. Örneğinden her bir alanın değerini almak için, getattr(instance, field.name) kullanın.

Güncelleme: Django katkıda bulunan bir API Kodu. Google bir Yaz parçası olarak _Meta nesneyi değiştirmek için çalışıyoruz Bkz:
- https://groups.google.com/forum/#!topic/django-developers/hD4roZq0wyk
- https://code.djangoproject.com/wiki/new_meta_api

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • 24 Канал

    24 КанаÐ

    5 ÅžUBAT 2006
  • bethliebert

    bethliebert

    23 EKÄ°M 2008
  • Tome Rodrigo

    Tome Rodrigo

    9 Temmuz 2006