我想用不相同的字段值定义下表,因为关注者不应该跟随自己:
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))
)
但我不知道如何实现它。任何提示?
谢谢
答案 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
回调函数。