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