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?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage