私はcrispy formを実行していました。これは、私が望むものとまったく同じようです:ブートストラップレイアウトのフォームをレンダリングします。ModelFormでクリスピーフォームを使用する
ここでは、forms.Form
の使用例について説明します。アップデートを行う方法を、
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)
しかし:これはOKですが、私はこのようなコードを書くことで鉱山を作成することができますか?ので、私はビューでこれを置く場合:インスタンスが唯一のModelFormですので
form = TemplateCreateForm(request.POST or None, instance=template)
が、それは動作しません。
ここでmodel.Form
をModelForm
に置き換え、ModelFormに新鮮なフォームを使用できますか? 私はこれをしました
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')
ここで私はMetaクラスを追加しました。 今すぐ動作しますが、このように使用するのは正しいですか? この方法でも更新プログラムは機能します。
更新を行うためにフォームを使用する正しい方法は何ですか?
のModelFormでそれを使用するために行うために、私は何をしたのですか? – EsseTi
私は答えを編集しました。 – maraujop
@maraujop:この質問をご覧ください:http://stackoverflow.com/questions/16581057/formhelper-object-has-no-attribute-append-while-using-crispy-forms-in-django これは私がここで言われたことをしていたときに問題が生じました。 –