2010-05-23 15 views
33

tengo una 'orden' Modelo:¿Cómo puedo solicitar campos en Django ModelForm?

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

y estoy usando la clase Django ModelForm para hacer una forma, pero quiero mostrar la fecha y hora de widgets de forma separada. He ocurrió esto:

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

El problema es que quiero poner estos campos en algún lugar entre 'otras cosas'

+0

posible duplicado de [¿Cómo sabe Django el orden para procesar los campos de formulario?] (Http://stackoverflow.com/questions/350799/how-does-django-know-the-order-to-render -form-fields) – DrTyrsa

Respuesta

58

Puede utilizar campos = [..., 'date', ' time ', ...] en la clase Meta de tu formulario. Ver: http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#changing-the-order-of-fields

+8

Esta es la respuesta correcta, mientras que solo quiero mencionar que fields = [...] puede contener campos definidos por el usuario. – dspjm

+0

Exactamente, y cuando intente anular '__init__' llamando' self.fields.keyOrder = [ ...] 'en su lugar - obtendrá problemas (excepciones, etc.). –

-3

Simplemente cambie el orden de los atributos de clase en su models.py. Funciona en 1.9

+3

Esto no responde a la pregunta sobre campos adicionales que no son parte del modelo. –

Cuestiones relacionadas