Итерация через поля модели - Django

Я пытаюсь выполнить итерацию по полям, поскольку они записаны в моей модели:

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

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

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


Любые идеи?

Ответы

Ответ 1

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

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

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