Я столкнулся с хрустящей формой, и, похоже, делает именно то, что мне нужно: визуализировать формы с макетом начальной загрузки.
Теперь в примере рассказывается об использовании 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.
Теперь, могу ли я заменить model.Form
на ModelForm
и использовать хрустящую форму для 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. Теперь: это работает, но правильно ли использовать его так? Обновление также работает таким образом.
Каков правильный способ использования форм для выполнения обновления?