formencode UniqueEmail有效

2024-06-08 17:24:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试实现用户注册和编辑表单:

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验证器中可用?你知道吗


Tags: intrue编辑value电子邮件emailnotclass