8

db.define_table('person', Field('name'), format='%(name)s')

这种格式在这里做什么?

4

1 回答 1

10

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

于 2012-01-05T16:29:42.783 回答