utilizar la forma crujiente con ModelForm

Me he estado topandoforma crujiente, y parece hacer exactamente lo que quiero: renderizar formularios con diseño bootstrap.

Ahora, el ejemplo habla de usarforms.Form. Esto está bien, puedo crear el mío escribiendo el código así:

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)

Pero, ¿cómo hacer la actualización? Porque si pongo esto en la vista:

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

no funciona porqueLa instancia es solo para ModelForm.

Ahora, ¿puedo sustituir elforms.Form conModelForm y utilizar forma crujiente para ModelForm? hice esto

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

Aquí agregué la clase Meta. Ahora: funciona, pero ¿es correcto usarlo así? La actualización funciona también de esta manera.

¿Cuál es la forma correcta de usar formularios para hacer la actualización?

Respuestas a la pregunta(1)

Su respuesta a la pregunta