0

ユーザー登録と編集フォームを実装しようとしています:

class UniqueEmail(formencode.FancyValidator):
     def _to_python(self, value, state):
         if value in (email for (email, ) in DBSession.query(User.email)):
             raise Invalid('Email already registered. '
                'A single account per email is allowed', value, state)
         return value

class UserEditData(formencode.Schema):
    name = validators.String(not_empty=True)
    email = All(validators.Email(not_empty=True),
                UniqueEmail())

登録時に問題なく動作しますが、編集時に、ユーザーが電子メールを変更しないと、電子メールが既にデータベースにあるため、(明らかに) 無効な例外が発生します。

現在の情報をuser(経由でrequest.user) 利用できるので、クエリを省略できますが、バリデーターで利用できるuser.emailようにするにはどうすればよいですか?userUniqueEmail

4

0 に答える 0