[英]Reset form Django with instance
我創建頁面來更新用戶auth用戶名。 但是在前端,如果存在用戶名django顯示錯誤(確定)但更改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()
重置表單,因為這是用戶編輯頁面。 我需要帶有實際信息的“重置”表格。
如果您從數據庫中獲取用戶並將其用作表單實例,則request.user
不應更改。
user = User.objects.get(id=request.user.id)
form_user = UserForm(request.POST or None, instance=user )
順便說一句,通常建議在成功發布請求后重定向(即使您重定向到相同的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})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.