użyj Crispy formularza z ModelForm

Wpadłem na tochrupiąca formai wydaje się, że robi dokładnie to, co chcę: renderować formularze z układem ładowania początkowego.

Teraz przykład mówi o używaniuforms.Form. To jest w porządku, mogę tworzyć moje, pisząc kod w ten sposób:

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)

Ale jak zrobić aktualizację? bo jeśli umieściłbym to w widoku:

    form = TemplateCreateForm(request.POST or None, instance=template)

to nie działa, ponieważinstancja jest tylko dla ModelForm.

Czy mogę zastąpićforms.Form zModelForm i użyć chrupiącej formy dla ModelForm? ja to zrobiłem

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')

Tutaj dodałem klasę Meta. Teraz: działa, ale czy jest to poprawne? Aktualizacja działa tak samo w ten sposób.

Jaki jest prawidłowy sposób używania formularzy do aktualizacji?

questionAnswers(1)

yourAnswerToTheQuestion