Verwenden Sie Crispy Form mit ModelForm
Ich bin hineingeranntknusprige Form, und es scheint genau das zu tun, was ich will: Formulare mit Bootstrap-Layout rendern.
Im folgenden Beispiel wird die Verwendung beschriebenforms.Form
. Das ist in Ordnung, ich kann meins erstellen, indem ich den Code so schreibe:
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)
Aber wie mache ich das Update? denn wenn ich das in die ansicht lege:
form = TemplateCreateForm(request.POST or None, instance=template)
es funktioniert da nichtInstanz ist nur für ModelForm.
Jetzt kann ich das ersetzenforms.Form
mitModelForm
und knusprige Form für ModelForm verwenden? Ich tat dies
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')
Hier habe ich die Meta-Klasse hinzugefügt. Nun: es funktioniert, aber ist es richtig, es so zu benutzen? Das Update funktioniert auch so.
Wie verwende ich Formulare für die Aktualisierung?