【Django】viewsからフォームの初期値を設定する
違うテンプレートでformを使いまわしたいけど初期値は変えたかったので色々調べました。
[Django]Formに初期値を設定する方法
https://codelab.website/django-form-initial/
class a(TemplateView): template_name = 'kinmu.html' def b(self, **kwargs): params = {'form': None, 'name': self.user} initial_dict = dict(name=params['name']) # 追加 if self.method == 'POST': form = cForm(self.POST, initial=initial_dict) # initialを追加 print(form) if 'btn1' in self.POST: """ ボタン1を押したときの処理です """ elif 'btn2' in self.POST: """ ボタン2を押したときの処理です """ params['form'] = form else: params['form'] = cForm(initial=initial_dict) return render(self, 'd.html', params)
cFormにself.POSTとinitialを設定します。
self.userというのはログイン情報から持ってきているのでparams['name']を適当な文字列にしてください。
どのボタンを押されたかで処理を変えているの個人的に良いと思っているんですけど、ドキュメントには見る限り記載がないのでやめたほうがいいかもしれません...