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