DjangoでWebアプリケーションを開発しているのですが、ModelFormにinstance引数を渡すパターンでハマりました。
お力添えをよろしくお願いいたします。
前提・実現したいこと
DjangoでModelFormを使ってModelを更新したい。
Viewはクラスベース。
発生している問題
post後のform.is_valid()がFalseになる。
post後form.is_valid()がFalseで入力画面に戻った時、フォームに表示されるデフォルト値が['値']の形式になる。
該当のソースコード
python
1def get(self, r): 2 user = UserMaster.objects.filter(id=r.user.id).get() 3 form = UserForm(instance=user) 4 return render(r, 'update.html', {'form': form}) 5 6def post(self, r): 7 user = UserMaster.objects.filter(id=r.user.id).get() 8 form = UserForm(r=r.POST, instance=user) 9 10 if form.is_valid(): 11 form.save() 12 return render(r, 'complete.html') 13 else: 14 return render(r, 'update.html', {'form': form})
html
1<form method="post" action="{% url 'updateView' %}"> 2 {% csrf_token %} 3 {{ form }} 4 <button>更新</button> 5</form>
補足情報
- Python 3.6.5
- Django 2.1.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/13 08:38