user
作成/更新フォームのレンダリング/投稿の両方を管理するビューを作成しようとしているモデルがあります。
これが私が今のところ行ったビューです
def user_edit(request, user_id=None):
obj = {}
status = 200
if user_id:
user = get_object_or_404(User, pk=user_id)
else:
user = User()
user_form = UserForm(instance=user, prefix='user')
if request.method == 'POST':
user_form = UserForm(request.POST, instance=user, prefix='user')
if user_form.is_valid():
user_form.save()
else:
status = 406
obj['user_form'] = user_form
return render(request, 'user/edit.html', obj, status=status)
これは正常に動作しますが、ご覧のとおり、 myuser_form
は 2 回初期化されています。これをよりDRYにするためにPOST
、フォーム定義を再定義するのではなく、フォーム定義を更新したいと考えています。何かのようなもの:
if request.method == 'POST':
user_form.data = request.POST
user_form.prefix = 'user'
しかし、私はこれを機能させることはできません。だから2つの質問:
- 私の意見は有効に見えますか?
- フォームの再定義を回避するにはどうすればよいですか?