2010-05-23 12 views
33

Ho un modello 'ordine':Come posso ordinare i campi in Django ModelForm?

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

e sto usando classe Django ModelForm per rendere un form, ma voglio visualizzare la data e l'ora i widget separatamente. Ho arrivato fino a questo:

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

Il problema è che voglio mettere questi campi da qualche parte tra 'altre cose'

+0

possibile duplicato di [In che modo Django conosce l'ordine di rendering dei campi modulo?] (Http://stackoverflow.com/questions/350799/how-does-django-know-the-order-to-render -form-fields) – DrTyrsa

risposta

58

È possibile utilizzare i campi = [..., 'data', ' time ', ...] sulla classe Meta del tuo modulo. Vedi: http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#changing-the-order-of-fields

+8

Questa è la risposta corretta, mentre voglio solo ricordare che campi = [...] possono contenere campi definiti dall'utente. – dspjm

+0

Esattamente, e quando provate a sovrascrivere '__init__' chiamando' self.fields.keyOrder = [ ...] 'invece - avrete problemi (eccezioni ecc.). –

-3

Basta modificare l'ordine degli attributi di classe nel tuo models.py. Funziona in 1.9

+3

Questo non risponde alla domanda che riguarda i campi aggiuntivi che non fanno parte del modello. –

Problemi correlati