我有一个引用web2py提供的数据库表
auth_user
表:
db.define_table('t_user_business',
Field('f_user_id', type='reference auth_user',
label=T('User Id')),
Field('f_name', type='string',
label=T('Name')),
Field('f_link', type='string',
label=T('Link')),
Field('f_importance', type='integer',
label=T('Importance')),
auth.signature,
format='%(f_user_id)s',
migrate=settings.migrate)
我想设计一个页面,其中包含列出所有内容的表单 此表中的当前条目用于经过身份验证 用户。例如。
的内容db.t_user_business.f_user_id==3
3
替换为当前的auth_user.id
值
登录用户。
此外,在同一页面上,我希望有一个允许用户使用的表单 输入此表的新记录,并在提交后提交此记录 验证记录到数据库。
答案 0 :(得分:0)
当用户登录时,用户ID的值在auth.user_id
,因此您可以使用它来设置f_user_id
字段的默认值:
Field('f_user_id', type='reference auth_user',
default=auth.user_id, # Will be None if no logged in user.
readable=False, writable=False, label=T('User Id'))
使用上述默认值,每当为此表提交SQLFORM
表单时,f_user_id
的值将自动设置为当前登录用户的ID。
注意,readable
和writable
属性设置为False
,因此此字段不会显示在表单中。它也不会出现在网格中,但您可以在定义网格之前更改readable
属性来更改它:
db.t_user_business.f_user_id.readable = True
要在此表中显示与当前用户关联的记录网格(没有任何查看/编辑/删除按钮),您可以执行以下操作:
grid = SQLFORM.grid(db.t_user_business.f_user_id == auth.user_id,
deletable=False, editable=False, details=False)