2010-07-01 3 views
13

Я пытаюсь перебирать поля, как они записаны в моей модели:Итерация по модели полей - Джанго

В настоящее время я использую это:

def attrs(self): 
    for attr, value in self.__dict__.iteritems(): 
    yield attr, value 

но порядок кажется в значительной степени случайные :(


Любые идеи?

ответ

22

Атрибут _meta на Model классы и экземпляры - это django.db.models.options.Options, который предоставляет доступ ко всей полезной информации о Model.

Для полей это даст вам их в том порядке, в котором они были созданы (т. Е. В том же порядке, который был объявлен).

def attrs(self): 
    for field in self._meta.fields: 
     yield field.name, getattr(self, field.name)