###djangoのModelForm機能と自前の<input>属性の共存のさせかた。
長文です。
DjangoのModelFormは便利で、例えばテンプレートに{{ form.message }}
とかけけばテキスト入力部品が生成されます。
しかしこの方法は便利であるがゆえにカスタマイズに不向きです。
私は入力にajax通信を利用したいと思っているので、自前で<input>属性を作ろうと思いました。
そこで思ったのが「ModelForm機能と自前の<input>属性をどうやって共存させるか」ということです。
ajax通信をする部分は一部なので、そのほかではModelFormを利用したいと思いました。
私は自前の<input>属性のないとき、以下のようにしてModelFormから値をとり、モデルを登録しています。
python
1# 略 2class QuestionInput(FormView): 3 form_class = QuestionInputForm 4 def form_valid(self, form): 5 question_form = form.save(commit=False)# 保存を遅らせる 6 # 略 7 question_form.save()# 保存 8 return super().form_valid(form)
ここで自前の<input>属性を追加するとき、値のチェックはどこですればいいのでしょうか?
例えば以下のような<input>属性があった場合
html
1<form action="{% url 'dammie' %}" method="post"> 2{% csrf_token %} 3 <input type="text" name="test" id="test"> 4 <input type="submit" value="送信する"> 5</form>
素直にform_validメソッドの中で検証してしまっていいのでしょうか?
python
1# 略 2class QuestionInput(FormView): 3 form_class = QuestionInputForm 4 def form_valid(self, form): 5 question_form = form.save(commit=False)# 保存を遅らせる 6 # ここで値の検証をする? 7 if (request.POST['test'] == None): 8 # error処理 9 10 question_form.save()# 保存 11 return super().form_valid(form)
またerror処理の部分もなにを書けばいいのかわかりません。
というのもreturn render
をするとせっかくのフォームに打ち込んだ内容が消えてしまうと考えるからです。
ModelForm機能を利用しているときであればエラーが起きたときでも内容は保持されているので、それに上書きする形にしたいのですが、どう手をつければいいのやら霧に迷っている状態です。
以上二点
・<input>属性を追加するとき、値のチェックはどこですればいいのか?
・error処理の部分もなにを書けばいいのか?
が質問の要旨です。
どうかアドバイスいただけるとありがたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。