【问题标题】:web2py : non identical field constraintweb2py:非相同字段约束
【发布时间】:2016-01-20 15:44:48
【问题描述】:

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

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

但我不知道如何实现它。有什么提示吗?

谢谢

【问题讨论】:

    标签: python validation web2py data-access-layer


    【解决方案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'))
    

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

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

    【讨论】:

    • 我一直在寻找数据库验证器,但您的解决方案更有意义,因为这是用户请求功能。非常感谢!
    • 两个字段仍然使用IS_IN_DB 数据库验证器(user 字段的验证器默认添加,因为它是一个参考字段)。但是,只需将两者之一限制为 auth_user 记录的子集。
    猜你喜欢
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 2015-12-23
    • 2018-03-07
    • 2011-12-24
    • 2018-05-28
    相关资源
    最近更新 更多