Wenn ich eine Django Form haben, wie:Wie kennt Django die Reihenfolge, um Formularfelder zu rendern?
class ContactForm(forms.Form):
subject = forms.CharField(max_length=100)
message = forms.CharField()
sender = forms.EmailField()
Und ich rufe die as_table() -Methode eine Instanz dieser Form, wird Django die Felder wie derselben Reihenfolge übertragen, wie oben angegeben.
Meine Frage ist, wie Django die Reihenfolge kennt, in der Klassenvariablen definiert wurden?
(auch wie kann ich diese Ordnung außer Kraft setzen, zum Beispiel, wenn ich ein Feld aus dem classe des init Methode hinzufügen?)
Sie können das Feld 'sender' oben normal definieren und dann eine Variante Ihrer Einfügezeile verwenden: 'self.fields.insert (0, 'sender', self.fields ['sender'])' – EvdB
Dies funktioniert nicht mehr in Django 1.7, da Formularfelder OrderedDict verwenden, das append nicht unterstützt. Siehe meine aktualisierte Antwort unten (zu lang für einen Kommentar) ... –