2011-12-20 3 views
5

У меня есть общая функция, которая выполняет итерации над полями метаданных данного объекта. Все имена и значения полей выбираются правильно, за исключением полей ManyToMany. Кажется, что полностью игнорирует поля ManyToMany. Как мы извлекаем fks из полей m2m?manytomany поля не отображаются в _meta.fields

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

ответ

0

Если вы хотите, чтобы получить все имена полей в модели. Вам не нужно использовать self._meta.many_to_many + self._meta.fields.

Вы можете использовать только [field.name for field in model._meta.get_fields()].

Обратите внимание, что get_fields возвратит все поля (в том числе многие-ко-многим и внешнего ключа)

Джанго 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 "+" 
    """ 
Смежные вопросы