【发布时间】:2014-10-25 16:01:48
【问题描述】:
我正在尝试创建 3 个类来处理我的所有表单。
class FormCreate(CreateView):
model = MyForm
fields = ['field_1', 'Field']
template_name = 'the_path'
class FormUpdate(UpdateView):
model = MyForm
fields = ['Field_1', 'Field_2']
template_name = 'the_path'
class FormDelete(DeleteView):
model = MyForm
success_url = reverse_lazy('foo')
我不能为每个不同的 ModelForm 创建 3 个视图,这是重复的,所以我想创建一个基于模型的自定义表单,具有不同的模板和字段:
url(r'admin/gender/add/$', FormCreate.as_view(model=Gender, my_fields, template_name='template_path'), name='gender_add'),
url(r'admin/user/add/$', FormCreate.as_view(model=User, my_fields, template_name='template_path'), name='user_add'),
url(r'admin/company/add/$', FormCreate.as_view(model=Company, my_fields, template_name='template_path'), name='company_add'),
形式不同,作为模板和标签,是否有可能用一个好的url字符串处理这一切?是正确的行为吗?对于那些需要一些自定义的表单,我总是可以继承 CreateForm 并添加我的自定义方法。
提前感谢您的支持!
【问题讨论】:
-
生成表单可以使用内置的Django
modelform_factorydocs.djangoproject.com/en/dev/ref/forms/models -
@madzohan 谢谢,但它不允许传递模板名称、成功 URL 或模型。表单应该由传递给 as_view() 的参数创建。
-
实际上是这样 -
modelform_factory(model, fields=['Field_1', 'Field_2'])所以你在as_view中提供了model、fields、template和success_url
标签: django django-models django-forms django-views django-class-based-views