次のことを行いたい: - サイト ユーザーがフォームでメール アドレスを編集できるようにする。- 電子メールがデータベースに既に存在する場合、入力した電子メールが自分以外の誰かに属している限り、エラーが表示されます。したがって、A さんが test@yahoo.com というメールアドレスを入力し、B さんがすでにそのメールアドレスを持っている場合、エラーが発生します。人 A が test@yahoo.com という電子メールを入力し、それが彼女が使用していたのと同じ電子メールである場合、エラーはありません。
Djangoを使用してこれを行うにはどうすればよいですか?
次のコードがあります。
class UserEditForm(forms.ModelForm):
class Meta:
model = User
fields = ('first_name', 'email', 'last_name', )
def clean_email(self):
email = self.cleaned_data['email']
if email == self.email:
return email
try:
DjangoUser.objects.get(email=email)
raise ValidationError('Email is already taken.')
except DjangoUser.DoesNotExist:
pass
return email
email = forms.EmailField(required=True)
問題は、self.email がその人の現在のメールアドレスを教えてくれないことです。:(