web2py - auth_user中的extra_fields不显示

0 投票
1 回答
685 浏览
提问于 2025-04-20 07:08

如果我创建一个新的简单的 web2py 应用程序 test_auth,并在模型文件 my_tables.py 中添加了以下代码。

# -*- coding: utf-8 -*-
#Add authentication to the app.
from gluon.tools import Auth

auth = Auth(db)

#Add some fields in auth db to have a complet user profile.
auth.settings.extra_fields['auth_user']= [
    Field('phone_number', 'string'),
    Field('address', 'text'),
    Field('city', 'string'),
    Field('zip', 'string'),
    Field('phone', 'string'),
    Field('birthday', 'date', requires = IS_DATE(format=('%d-%m-%Y')))]
auth.define_tables(username=True, signature=True)

在控制器 "default.py" 中,我这样修改了用户。

def user():
    if request.args(0) == 'profile':
        for field in auth.settings.extra_fields['auth_user']:
            field.readable = field.writable = True
    return dict(form=auth())

但是我在注册表单和 auth_user 表中看不到新添加的字段。我觉得我在某个地方漏掉了什么,但就是找不到。

我使用的是 web2py 2.9.8,也测试过 2.9.5,结果完全一样。

1 个回答

0

我在my_tables.py里的额外文件定义是个问题。Web2py已经在db.py模型里有了auth_user的定义。你需要修改db.py,而不是在一个单独的文件里添加新的定义。

撰写回答