在一个应用程序中,我需要创建两种类型的帐户,比方说用户和导师。 他们每个人都应该能够注册/登录/ ...由db。中的不同表定义的用户/教师帐户。
e.g。
[app]/user/register
应提供包含字段的表单:username, email, password, hobby
[app]/tutor/register
应提供包含字段的表单:username, email, pass, name, surname, telephone
Web2py身份验证服务允许使用可以自定义的auth_user
表。有没有办法在一个应用程序中根据控制器单独使用两个表?
字段auth.settings.table_user
包含auth_table的引用,但我可能不应该将其用于此目的。
答案 0 :(得分:1)
Auth系统并未设计为以这种方式工作。相反,最好将两个用户类型的所有字段放在单个auth_user
表中,然后有选择地将字段的readable
和writable
属性设置为{{1} }或True
取决于上下文。
在定义Auth:
的模型文件中False
在管理Auth功能的控制器中:
user_extra_fields = [Field('hobby'), ...]
tutor_extra_fields = [Field('telephone', ...]
auth.settings.extra_fields['auth_user'] = (
[Field('user_type', requires=IS_IN_SET(['User', 'Tutor']))] +
user_extra_fields + tutor_extra_fields)