Znalazłem się w crispy form, i wydaje się, że robię dokładnie to, co chcę: renderowanie formularzy z układem bootstrap.Użyj chrupiącego formularza z ModelForm
Teraz przykład mówi o używaniu forms.Form
. To jest w porządku, mogę utworzyć kopalnię, pisząc kod taki jak ten:
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 przeprowadzić aktualizację? bo jeśli ja kładę to w widoku:
form = TemplateCreateForm(request.POST or None, instance=template)
to nie działa, ponieważ instancji jest tylko dla ModelForm.
Teraz mogę zastąpić model.Form
z ModelForm
i użyć chrupiącego formularza dla ModelForm? Zrobiłem to
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 to prawda, aby używać go w ten sposób? Aktualizacja działa również w ten sposób.
Jaki jest poprawny sposób używania formularzy do aktualizacji?
Co mam zrobić, aby używać go z ModelForm? – EsseTi
Edytowałem odpowiedź. – maraujop
@maraujop: Proszę spojrzeć na to pytanie: http://stackoverflow.com/questions/16581057/formhelper-object-has-no-attribute-append-while-using-crispy-forms-in-django To Problem pojawił się, kiedy robiłem to, co tu powiedziano. –