我正在嘗試更新用戶欄位,但是email already exists當我嘗試使用相同的電子郵件地址更新它時回傳錯誤。
@login_required
def user_profile(request, id):
if request.user.id == int(id):
if request.method == "POST":
user = Account.objects.get(pk=request.user.pk)
form = UserProfileUpdateForm(request.POST, user=user)
if form.is_valid():
form.save()
messages.success(request, mark_safe("UPDATE: <br> your profile is updated"))
context = {
"form": form
}
return render(request, "accounts/user_profile.html", context)
else:
#...
else:
#...
else:
return redirect("not_found")
和forms.py
class UserProfileUpdateForm(forms.ModelForm):
class Meta:
model = Account
fields = ["first_name", "last_name", "first_name_kana", "last_name_kana",
"post_code", "city", "address", "building",
"tel", "sex", "occupation",
"year", "month", "day",
"parent_name", "parent_name_kana",
"year", "month", "day",
"school_type",
"school_name", "student_id",
"email"]
def __init__(self, *args, **kwargs):
now = datetime.datetime.now()
user = kwargs.pop("user")
super(UserProfileUpdateForm, self).__init__(*args, **kwargs)
# widget settings
使用相同的電子郵件地址更新用戶欄位的正確方法是什么。
uj5u.com熱心網友回復:
您可以在更新用戶時從查詢集中排除當前用戶。
class UserProfileUpdateForm(forms.ModelForm):
class Meta:
model = Account
fields = [....]
def clean_email(self):
email = self.cleaned_data.get("email")
if Account.objects.filter(email=email).exclude(pk=self.instance.pk).exists():
raise forms.ValidationError("Email Already Exists")
return email
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/327169.html
標籤:姜戈 django-forms
下一篇:django.db.utils.IntegrityError:關系“shop_book”的“genre_id”列中的空值違反了非空約束
