【发布时间】:2012-02-03 10:01:36
【问题描述】:
db.define_table('person', Field('name'), format='%(name)s')
这种格式在这里有什么作用?
【问题讨论】:
标签: format web2py representation
db.define_table('person', Field('name'), format='%(name)s')
这种格式在这里有什么作用?
【问题讨论】:
标签: format web2py representation
format 参数用于确定引用“person”表的其他表中的字段将如何显示。例如,如果您定义:
db.define_table('dog',
Field('name'),
Field('owner', db.person)
“所有者”字段是引用“人员”表的引用字段(即,它存储“人员”表中记录的记录 ID)。在大多数情况下,当您显示“狗”表中的数据时,您不想显示存储在“所有者”字段中的原始 db.person 记录 ID,因为这没有任何意义——相反,显示此人的“姓名”更有意义。在 web2py 中,表格的 format 属性可以在表格和表格中自动替换。
当你基于'dog'表创建SQLFORM时,它会自动为'owner'字段生成一个下拉列表,并且由于'person'表定义的format='%(name)s'参数,drop -down 列表将显示 db.person 名称而不是记录 ID(即使在提交表单时,“所有者”字段将存储关联的记录 ID 而不是名称)。
此外,如果您在 SQLTABLE 或 SQLFORM.grid 中显示“狗”表中的记录,“所有者”字段将显示所有者的姓名而不是所有者的记录 ID。
见http://web2py.com/books/default/chapter/29/6#Record-representation。
【讨论】:
format 字符串可以包含表中任何字段的名称。
auth.user.username 获得。