我尝试将默认登录样式更改为基于用户名的登录。为此,我在db.py中写道:
from gluon.tools import Auth, Crud, Service, PluginManager, prettydate
auth = Auth(db)
crud, service, plugins = Crud(db), Service(), PluginManager()
auth.define_tables(username=True, signature=False, migrate=False)
auth_table=auth.settings.table_user
auth_table.username.requires = IS_NOT_IN_DB(db, auth_table.username)
当我尝试注册新用户时,它会给我这个错误:
<class 'sqlite3.OperationalError'> no such column: auth_user.username
我想知道如何正确处理这个问题。此外,对如何公开和解决这些表的工作有一个很好的解释是非常有帮助的。我对此非常陌生,发现它真的令人困惑。
答案 0 :(得分:1)
如果您最初创建的Auth表没有用户名,则auth_user表中将没有“username”字段。因为您有auth.define_tables(..., migrate=False)
,所以DAL不会运行迁移来添加新字段。因此,请尝试暂时将migrate更改为True,以便添加该字段。