2010-05-23 11 views
33

Ich habe ein ‚bestellen‘ Modell:Wie kann ich Felder in Django ModelForm bestellen?

class Order(models.Model): 
    date_time=models.DateTimeField() 
    # other stuff 

Und ich bin mit Django Modelform Klasse eine Form zu machen, aber ich mag das Datum anzuzeigen und Widgets getrennt. Ich habe kam mit dieser:

class Form(forms.ModelForm): 
    class Meta: 
     model = Order 
     exclude = ('date_time',) 
     date = forms.DateField() 
     time = forms.TimeField() 

Das Problem ist, dass ich diese Felder irgendwo zwischen ‚other stuff‘

+0

mögliche Duplikat von [Wie kennt Django die Reihenfolge Render Form Felder?] (Http://stackoverflow.com/questions/350799/how-does-django-know-the-order-to-render -form-fields) – DrTyrsa

Antwort

58
setzen wollen

Sie können Felder = [..., ‚Datum‘, " Zeit ', ...] auf Meta-Klasse Ihrer Form. Siehe: http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#changing-the-order-of-fields

+8

Das ist die richtige Antwort, während ich nur erwähnen möchte, dass fields = [...] benutzerdefinierte Felder enthalten kann. – dspjm

+0

Genau, und wenn Sie versuchen, '__init__' zu überschreiben, rufen Sie' self.fields.keyOrder = [ ...] 'stattdessen auf - Sie werden Probleme (Ausnahmen usw.) bekommen. –

-3

Ändern Sie einfach die Reihenfolge der Klassenattribute in Ihrem models.py. Works in 1.9

+3

Dies beantwortet nicht die Frage, die sich auf zusätzliche Felder bezieht, die nicht Teil des Modells sind. –

Verwandte Themen