Ich versuche, die doppelte E-Mail zu überprüfen, während ich als ein Benutzer angemeldet bin und mein eigenes Profil bearbeiten.Überprüfen doppelte E-Mail beim Bearbeiten von Benutzerprofil in Django
Aber wenn die eingegebene E-Mail die E-Mail des aktuell angemeldeten Benutzers ist und ich meine aktuelle E-Mail nicht aktualisieren möchte, erhalte ich auch eine doppelte E-Mail-Fehlermeldung.
Konten/forms.py
class UserProfileForm(forms.ModelForm):
class Meta:
model = models.Profile
fields = ("organisation", "phone_number")
first_name = forms.CharField(max_length=30)
last_name = forms.CharField(max_length=30)
phone_number = PhoneNumberField(label=_("Phone (Please state your country code eg. +44)"))
organisation = forms.CharField(max_length=30)
email = forms.EmailField()
def __init__(self, *args, **kwargs):
super(UserProfileForm, self).__init__(*args, **kwargs)
self.initial['first_name'] = self.instance.user.first_name
self.initial['last_name'] = self.instance.user.last_name
self.initial['email'] = self.instance.user.email
helper = FormHelper()
helper.layout = Layout(
Div(
Field("first_name", wrapper_class="col-sm-6"),
Field("last_name", wrapper_class="col-sm-6"),
css_class = "row"
),
Div(
Field("organisation", wrapper_class="col-sm-6"),
Field("email", wrapper_class="col-sm-6"),
css_class = "row"
),
Div(
Field("phone_number", wrapper_class="col-sm-6"),
css_class = "row"
),
)
def clean_email(self):
email = self.cleaned_data.get('email')
if email and User.objects.filter(email=email).exists():
raise forms.ValidationError(u'Please use a different email address.')
return email
def save(self, commit=True, *args, **kwargs):
self.instance.user.first_name = self.cleaned_data['first_name']
self.instance.user.last_name = self.cleaned_data['last_name']
self.instance.user.email = self.cleaned_data['email']
self.instance.user.save()
return super(UserProfileForm, self).save(commit, *args, **kwargs)
Wie kann ich überprüfen, ob die eingegebene E-Mail eine neue E-Mail ist, und wenn es neue E-Mail ist dann überprüfen Sie doppelte Funktion andere E-Mail-Feld ignorieren und in anderen Bereiche aktualisieren.
Jede Hilfe/Vorschlag wird sehr geschätzt. Danke im Voraus.
Hallo sollte hinzufügen Sie sehen sich diesen Beitrag an, dieser kann Ihnen helfen [prüfen, ob eine E-Mail existiert oder nicht] (https://stackoverflow.com/a/39602446/7261317) – Robert