2010-05-23 3 views
33

У меня есть «заказ» Модель:Как я могу упорядочить поля в Django ModelForm?

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

И я использую класс Django ModelForm для визуализации формы, но я хочу, чтобы отобразить дату и время виджеты отдельно. Я пришел с этим:

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

Проблема заключается в том, что я хочу, чтобы поместить эти поля где-то между «другими вещами»

+0

Возможный дубликат [Как Django Знать порядок визуализации полей формы?] (Http://stackoverflow.com/questions/350799/how-does-django-know-the-order-to-render -form-fields) – DrTyrsa

ответ

58

Вы можете использовать поле = [..., «даты», ' time ', ...] в мета-классе вашей формы. См.: http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#changing-the-order-of-fields

+8

Это правильный ответ, хотя я просто хочу упомянуть, что поля = [...] могут содержать определенные пользователем поля. – dspjm

+0

Точно, когда вы пытаетесь переопределить '__init__', вызывая' self.fields.keyOrder = [<модель и пользовательские поля> ...] 'вместо этого, вы получите проблемы (исключения и т. Д.). –

-3

Просто измените порядок атрибутов класса в models.py. Работает в версии 1.9

+3

Это не отвечает на вопрос, касающийся дополнительных полей, которые не являются частью модели. –

Смежные вопросы