【发布时间】:2012-10-17 10:17:53
【问题描述】:
我遇到了crispy form,它似乎完全符合我的要求:使用引导布局呈现表单。
现在,该示例讨论使用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 并为ModelForm 使用脆的形式吗?
我这样做了
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 类。 现在:它可以工作,但是这样使用它是否正确? 更新也以这种方式运行。
使用表单进行更新的正确方法是什么?
【问题讨论】:
标签: django django-models django-forms django-crispy-forms