2010-07-01 24 views
13

ich durch die Felder zu Iterierte versuchen, wie sie in meinem Modell geschrieben werden unten:Iterieren durch Modellfelder - Django

zur Zeit verwende ich dies:

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

aber die Reihenfolge scheint ziemlich zufällig :(


Irgendwelche Ideen?

Antwort

22

Das _meta Attribut auf Model Klassen und Instanzen ist eine django.db.models.options.Options, die Zugriff auf alle Arten von nützlichen Informationen über die Model in Frage bietet.

Für Felder gibt es sie in der Reihenfolge, in der sie erstellt wurden (d. H. In derselben Reihenfolge, in der sie deklariert wurden).

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