使用相同的电子邮件地址更新用户,给出电子邮件已存在的错误
updating user with same email address, gives email already exists error
我正在尝试更新用户字段,但是当我尝试使用相同的电子邮件地址更新它时出现 returns 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
用相同的电子邮件地址更新用户字段的正确方法是什么。
您可以在更新用户时从查询集中排除当前用户。
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
我正在尝试更新用户字段,但是当我尝试使用相同的电子邮件地址更新它时出现 returns 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
用相同的电子邮件地址更新用户字段的正确方法是什么。
您可以在更新用户时从查询集中排除当前用户。
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