孙子中的 web2py 表示“格式”
Posted
技术标签:
【中文标题】孙子中的 web2py 表示“格式”【英文标题】:web2py representation 'format' in grandchild 【发布时间】:2012-07-01 07:43:17 【问题描述】:q&a here(和文档)描述了在 define_table 函数中使用 format=
参数。我很难让它在稍微复杂一点的情况下工作。我正在使用 web2py 版本 (1, 99, 7, datetime.datetime(2012, 3, 4, 22, 12, 8), 'stable')
和 Python 2.5.4
。 (我使用的是 mysql,但我认为这无关紧要。)
我有以下几点:
“独立”(非子)表 Institution
和 Person
。表 Team
是 Institution
的子表。表Team_staff
将Person
和Team
连接在一起。这是一个精简版:
db.define_table('Person',
Field('First_name', 'string', length=60, required=True),
Field('Last_name', 'string', length=60, required=True),
...
format='%(First_name)s %(Last_name)s')
db.define_table('Institution',
Field('Institution_name', 'string', length=60, required=True,
unique=True),
format='%(Institution_name)s')
db.define_table('Team',
Field('Institution', db.Institution),
Field('Sex', 'string', required=True,
requires=IS_IN_SET(['m', 'f'])),
Field('Level', 'string', required=True),
...
format='%(Institution)s %(Sex)s')
db.define_table('Team_staff',
Field('Team', db.Team),
Field('Team_staff_member', db.Person),
...
Field('Team_position', 'string', required=True))
到目前为止,一切都很好。我有一个创建SQLFORM(db.Team_staff)
的控制器和一个仅显示表单的视图。当我下拉“团队”下拉菜单时,我看到机构 id 与“性别”值连接在一起(例如 1 f
,然后是下面的 1 m
,然后是 2 f
,等等向前)。 Institution
有 format='%(Institution_name)s'
,为什么我看不到机构名称而不是机构 ID?
【问题讨论】:
【参考方案1】:“格式”属性不会以这种方式跨表传播。相反,您应该能够将“格式”属性定义为 lambda 函数,它将表格的一行作为其参数:
db.define_table('Team', ...,
format=lambda r: '%s %s' % (db.Institution[r.Institution].Institution_name,
r.Sex))
【讨论】:
以上是关于孙子中的 web2py 表示“格式”的主要内容,如果未能解决你的问题,请参考以下文章