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