Как я могу заказать поля в Django ModelForm? - PullRequest
36 голосов
/ 24 мая 2010

У меня есть модель заказа:

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()

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

Ответы [ 3 ]

61 голосов
/ 28 мая 2010

Вы можете использовать:

class Meta:
    fields = [ ..., 'date', 'time', ... ]

См. Документы: http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#changing-the-order-of-fields

1 голос
/ 11 апреля 2018

Если добавить ответ к Lukasz, то в Django 2.0 полная форма регистрации администратора с порядком полей будет выглядеть следующим образом:

models.py

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

admin.py

class OrderForm(forms.ModelForm):
    datef = forms.DateField()
    timef = forms.TimeField()

    class Meta:
      model = Order
      exclude = ['date_time']
      fields = (
          'datef',
          'timef',
          # other fields
      )

class OrderAdmin(admin.ModelAdmin):
    form = OrderForm

admin.site.register(Order, OrderAdmin)

Обратите внимание, что поля даты и времени определены в классе ModelForm, а не в классе Meta.

0 голосов
/ 17 февраля 2016

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...