从Django中基于类的通用视图自定义表单变量的首选方法是什么?

时间:2012-03-28 07:38:58

标签: django django-forms django-templates django-generic-views

我目前正在使用CreateView作为课程Order

urls.py的一部分看起来像这样

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

如果我只是在{{ form }}内执行oors/orders/create.html,那么它将显示models.py中声明的所有字段。

自定义每个字段外观甚至控制它们是否可见的最佳方法是什么(某些字段是可选的)?

1 个答案:

答案 0 :(得分:1)

要回答有关模型中哪些字段应该可用的问题,您可以使用ModelForm创建自定义表单。选项fieldsexclude定义表单中可用的字段:

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