web2py:非相同的字段约束

时间:2015-10-21 15:03:04

标签: python validation web2py data-access-layer

我想用不相同的字段值定义下表,因为关注者不应该跟随自己:

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))
)

但我不知道如何实现它。任何提示?

谢谢

1 个答案:

答案 0 :(得分:1)

假设通过表单处理进行插入:

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'))

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

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