web2py:非相同字段约束

web2py : non identical field constraint

我想用不相同的字段值定义以下 table 作为关注者不应关注自己:

db.define_table('followers', 
    Field('follower', 
          db.auth_user, 
          requires=(db.subscription.follower != db.subscription.user)),
    Field('user', 
          db.auth_user, 
          requires=(db.subscription.follower != db.subscription.user))
)

但是不知道怎么实现。有什么提示吗?

谢谢

假设插入将通过表单处理发生:

db.define_table('followers', 
    Field('follower', 'reference auth_user',
          requires=IS_IN_DB(db(db.auth_user.id != request.post_vars.user),
                            'auth_user.id', db.auth_user._format)),
    Field('user', 'reference auth_user'))

这将允许 user 字段中的任何 auth_user ID,但会将 follower 字段限制为 request.post_vars.user 中提交的 ID 以外的 ID。当没有表单提交时,request.post_vars.user 将只是 None,这无关紧要,因为验证器仅在表单提交时使用。

或者,您可以在处理表单时使用 onvalidation 回调函数。