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
回调函数。
我想用不相同的字段值定义以下 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
回调函数。