Как лучше всего настроить переменную формы из общего представления на основе классов в Django? - PullRequest
0 голосов
/ 28 марта 2012

В настоящее время я использую CreateView для класса Order.

Часть urls.py выглядит следующим образом

url(
    r'^orders/create/$',
    CreateView.as_view(
        model = Order,
        template_name = 'doors/orders/create.html'
    ),
    name = 'orders_create'
),

Если я просто сделаю {{ form }} внутриa oors/orders/create.html, тогда он отобразит все поля, объявленные в models.py.

image

Каков наилучший способ настроить внешний вид каждого поля и даже контролировать,они даже видны или нет (некоторые поля являются необязательными)?

1 Ответ

1 голос
/ 28 марта 2012

Чтобы ответить на часть вашего вопроса, касающуюся того, какие поля модели должны быть доступны в форме, вы можете создать пользовательскую форму с ModelForm.Опции fields и exclude определяют, какие поля доступны в форме:

https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#using-a-subset-of-fields-on-the-form

Затем вы должны указать CreateView использовать вашу пользовательскую форму, добавив form_class:

url(
    r'^orders/create/$',
    CreateView.as_view(
        model = Order,
        template_name = 'doors/orders/create.html',
        form_class = OrderCreateForm,
    ),
    name = 'orders_create'
),

Что касается второй части вашего вопроса (как оформить форму и ее поля), вы можете использовать {{ form.as_p }}, {{ form.as_table }} или собрать полностью собственный шаблон:

https://docs.djangoproject.com/en/dev/topics/forms/#displaying-a-form-using-a-template

...