用实例重置表单 Django
Reset form Django with instance
我创建页面来更新用户授权用户名。但在前端,如果存在用户名 django show erros (ok) 但更改 request.user 实例。所以我在菜单上的用户名也会更改和输入。我需要刷新页面才能恢复正常。
form_profile = UserProfileForm(request.POST or None, instance = UserProfile.objects.get(user = request.user))
form_user = UserForm(request.POST or None, instance = request.user )
if form_profile.is_valid() and form_user.is_valid():
form_profile.save()
form_user.save()
template = loader.get_template('users/user_edit.html')
return HttpResponse(template.render({"form_profile":form_profile, "form_user": form_user}, request))
我无法使用 form_profile = UserProfileForm()
重置表单,因为这是用户编辑页面。我需要包含实际信息的 "reset" 表格。
截图
如果您从数据库中获取用户并将其用作表单实例,则 request.user
不应更改。
user = User.objects.get(id=request.user.id)
form_user = UserForm(request.POST or None, instance=user )
顺便说一句,通常建议在成功的 post 请求后重定向(即使您重定向到相同的 url)。您还可以使用 render
快捷方式来简化您的代码:
from django.shortcuts import render, redirect
def my_view(request):
form_profile = UserProfileForm(request.POST or None, instance = UserProfile.objects.get(user = request.user))
form_user = UserForm(request.POST or None, instance = request.user )
if form_profile.is_valid() and form_user.is_valid():
form_profile.save()
form_user.save()
return redirect('/success-url/')
return render(request, 'users/user_edit.html', {"form_profile":form_profile, "form_user": form_user})
我创建页面来更新用户授权用户名。但在前端,如果存在用户名 django show erros (ok) 但更改 request.user 实例。所以我在菜单上的用户名也会更改和输入。我需要刷新页面才能恢复正常。
form_profile = UserProfileForm(request.POST or None, instance = UserProfile.objects.get(user = request.user))
form_user = UserForm(request.POST or None, instance = request.user )
if form_profile.is_valid() and form_user.is_valid():
form_profile.save()
form_user.save()
template = loader.get_template('users/user_edit.html')
return HttpResponse(template.render({"form_profile":form_profile, "form_user": form_user}, request))
我无法使用 form_profile = UserProfileForm()
重置表单,因为这是用户编辑页面。我需要包含实际信息的 "reset" 表格。
截图
如果您从数据库中获取用户并将其用作表单实例,则 request.user
不应更改。
user = User.objects.get(id=request.user.id)
form_user = UserForm(request.POST or None, instance=user )
顺便说一句,通常建议在成功的 post 请求后重定向(即使您重定向到相同的 url)。您还可以使用 render
快捷方式来简化您的代码:
from django.shortcuts import render, redirect
def my_view(request):
form_profile = UserProfileForm(request.POST or None, instance = UserProfile.objects.get(user = request.user))
form_user = UserForm(request.POST or None, instance = request.user )
if form_profile.is_valid() and form_user.is_valid():
form_profile.save()
form_user.save()
return redirect('/success-url/')
return render(request, 'users/user_edit.html', {"form_profile":form_profile, "form_user": form_user})