2010-08-23 36 views
5

django modelinin tüm alanlarını nasıl yineleyebilir ve alabilirim?Django model yineleme alanları

foo.item._meta.get_all_field_names()'un tüm alan adlarını getirdiğini biliyorum. Model alanlarına bu alanlara (gerçek değerlerini de dahil) nasıl erişebilirim? (Normal gösterimin dışında foo.fieldname).

BirçokTomany ilişkileri dahil olmak üzere modelime özel bir çıktı oluşturmak için buna ihtiyacım var. Herhangi bir fikrin var mı?

getattr(foo.__class__, <field_name>) 

Bu, alan nesnesi yerine verilen modeli örneği değeri vermelidir: nereden

cevap

8

.

getattr(foo, <field_name>) 
+0

Kendinden bahsettiğiniz gibi, bu yalnızca bana alan nesnesini döndürür. Verilen model örneğinin alan değerine ihtiyacım var. Düzenlendi soru buna göre ... –

+0

Cevabı düzenledim, umarım bu yardımcı olur. – gruszczy

2

Bu çirkin görünüyor ama işe yarayacak: Size verilen modeli insance alan değerinin istiyorsanız böyle diyebilirsin söyledi

for each in model_instance._meta.fields: 
    print each.value_from_object(model_instance) 

, başka önerim var. İhtiyaçlarınız onun manyTomany ilişkileri de dahil olmak üzere benim model için özel bir çıktısını oluşturmak için

olduğunu göz önüne alındığında.

nasıl bunun üzerinde çalışmaya sonra serializing uygun bir formatta (XML/JSON) için örnek ve yaklaşık? Bu, _meta ya da dahili yöntemlerden herhangi birinde herhangi bir bağımlılığı önler (muhtemelen değişebilir).

+1

Manoj Ekleriniz için teşekkürler. Çirkin olan benim ManyToMany ilişkilerimin problemini çözmüyor: (Sanırım serileştirmek için gitmem gerekecek!) –

İlgili konular