db.define_table(‘person’,Field(‘name’),format=’%(name)s’)
这种格式在这里做什么?
解决方法
format参数用于确定将如何显示引用“person”表的其他表中的字段.例如,如果您定义:
db.define_table('dog',Field('name'),Field('owner',db.person)
“所有者”字段是引用“人物”表的参考字段(即,它存储来自“人”表的记录的记录ID).在大多数情况下,当您从’dog’表中显示数据时,您不希望显示存储在’owner’字段中的原始db.person记录ID,因为它没有任何意义 – 相反,显示此人的“姓名”更有意义.在web2py中,表的format属性在表单和表中启用此自动替换.
当您基于’dog’表创建sqlFORM时,它将自动为’owner’字段生成一个下拉列表,并且因为’person’表定义的format =’%(name)s’参数,下拉列表将显示db.person名称而不是记录ID(即使在表单提交时,“owner”字段将存储关联的记录ID而不是名称).
此外,如果您在sqlTABLE或sqlFORM.grid中显示’dog’表中的记录,“owner”字段将显示所有者的名称而不是所有者的记录ID.
见http://web2py.com/books/default/chapter/29/6#Record-representation.