如何将auth.user.id设置为SQLFORM中字段的默认值

时间:2013-08-05 20:02:26

标签: python web2py

我遇到了一些从其他数据库字段引用auth_user的问题。在以下视图(company.html)中,我有一个用于'company'表的SQLFORM。如何将公司表单的user_id字段设置为默认为当前登录用户的ID是什么?我尝试将名为user_id的字段添加到公司表中,但由于某种原因,它会导致表单每次都无效。

我在另一个名为db_tasks.py的文件夹的models文件夹中有以下代码:

# Define company table
db.define_table('company',
Field('company_name', notnull=True, unique=True),
Field('user_id', db.auth_user, default=auth.user_id),
Field('email'),
Field('phone', notnull=True),
Field('url'),
format = '%(company_name)s')

我的常规db.py文件:

db = DAL('sqlite://storage.sqlite',pool_size=1,check_reserved=['all'])
auth = Auth(db)

# Add extra user fields
auth.settings.extra_fields['auth_user'] = [
  Field('address'),
  Field('city'),
  Field('zip'),
  Field('image', 'upload'),
]

公司的控制人。当我导航到此视图时,“用户”字段显示在数据网格中,但不显示在表单中。 (而且我不希望它,我只是想将它设置为任何用户登录,即auth.user)。无论出于何种原因,表格都不会验证。我认为这与模型有关。

@auth.requires_login()
def company():
# init a form object for 'company' table
company_form = SQLFORM(db.company).process()
# init a grid object for 'company' table
grid = SQLFORM.grid(db.company, create=False, deletable=False, editable=False, maxtextlength=50, orderby=db.company.company_name)
return locals()

以下是公司的观点:

{{extend 'layout.html'}}

<h2>Add a new company:</h2>
<br/>

{{=company_form.custom.begin}}
<strong>Company Name</strong>         <br/>{{=company_form.custom.widget.company_name}}<br/>
 <strong>Email</strong><br/>{{=company_form.custom.widget.email}}<br/>
 <strong>Phone</strong><br/>{{=company_form.custom.widget.phone}}<br/>
 <strong>URL</strong><br/>{{=company_form.custom.widget.url}}<br/>
 {{=company_form.custom.submit}}
 {{=company_form.custom.end}}

 <br/>
 <br/>
 <h2>All Companies:</h2>
 <br/>
 {{=grid}}

1 个答案:

答案 0 :(得分:0)

session.auth.user.id if session.auth else None”怎么样?