2011-12-20 15 views
5

Belirli bir nesnenin _meta.fields üzerinde yinelenen genel bir işlev var. ManyToMany alanları hariç tüm alan adları ve değerleri doğru şekilde getirilir. ManyToMany alanlarını tamamen yok sayıyor gibi görünüyor. Ft'leri m2m alanlarından nasıl geri alabiliriz? Eğer bir model tüm alan adlarını almak istiyorsanızçok alanlı alanlar _meta.fields içinde görünmüyor

def myfunc(self) 
    for field in self._meta.fields: 
     type = field.get_internal_type() 
     name = field.name 
     val = getattr(self,field.name) 

cevap

15

Onlar self._meta.many_to_many

0

içindedir. self._meta.many_to_many + self._meta.fields'u kullanmanız gerekmez.

[field.name for field in model._meta.get_fields()]'u kullanabilirsiniz. get_fields tüm alanları döneceğini

Not (dahil birçok-çoğa ve yabancı anahtar)

Django get_fields:

def get_fields(self, include_parents=True, include_hidden=False): 
    """ 
    Returns a list of fields associated to the model. By default, includes 
    forward and reverse fields, fields derived from inheritance, but not 
    hidden fields. The returned fields can be changed using the parameters: 

    - include_parents: include fields derived from inheritance 
    - include_hidden: include fields that have a related_name that 
         starts with a "+" 
    """ 
İlgili konular