我一直在遇到脆的形式,它似乎完全符合我的要求:使用引导布局渲染表单。
现在,该示例讨论使用forms.Form
. 没关系,我可以通过编写如下代码来创建我的:
class TemplateCreateForm(forms.Form):
title = forms.CharField(label=(u'Task name'))
description = forms.CharField(label=(u'Task description'))
url_start = forms.CharField(label=(u'Start page url'))
url_end = forms.CharField(label=(u'Final page url'))
def __init__(self, *args, **kwargs):
self.helper = FormHelper()
self.helper.form_method = 'post'
self.helper.add_input(Submit('submit', 'Submit'))
super(TemplateCreateForm, self).__init__(*args, **kwargs)
但是,如何进行更新?因为如果我把它放在视图中:
form = TemplateCreateForm(request.POST or None, instance=template)
它不起作用,因为实例仅适用于 ModelForm。
现在,我可以将 ModelForm 替换为forms.Form
withModelForm
并使用酥脆的形式吗?我做了这个
class TemplateCreateForm(ModelForm):
title = forms.CharField(label=(u'Task name'))
description = forms.CharField(label=(u'Task description'))
url_start = forms.CharField(label=(u'Start page url'))
url_end = forms.CharField(label=(u'Final page url'))
def __init__(self, *args, **kwargs):
self.helper = FormHelper()
self.helper.form_method = 'post'
self.helper.add_input(Submit('submit', 'Submit'))
super(TemplateCreateForm, self).__init__(*args, **kwargs)
class Meta:
model = Template
exclude = ('user')
这里我添加了 Meta 类。现在:它可以工作,但是这样使用它是否正确?更新也以这种方式工作。
使用表单进行更新的正确方法是什么?