Web2py数据库中的表示格式

8
这里的format是什么意思?
这段代码是用于定义数据库表格的,其中'person'是表格名称,Field('name')表示表格中有一个名为'name'的字段。而format='%(name)s'则是指定了该表格的显示格式,其中'%(name)s'表示以'name'字段的值作为显示内容。
1个回答

11

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(尽管在表单提交时,'owner'字段将存储关联记录ID而不是名称)。
此外,如果您在SQLTABLE或SQLFORM.grid中显示'dog'表中的记录,则'owner'字段将显示所有者的名称而不是所有者的记录ID。
请参见http://web2py.com/books/default/chapter/29/6#Record-representation

谢谢。我不明白这里的符号**%和参数末尾的s**是什么意思。 - Jensen
这只是标准的 Python 字符串格式化符号format 字符串可以包含表格中任何字段的名称。 - Anthony
顺便问一下,在服务器端如何获取已经登录我的网站的用户的用户名?谢谢。 - Jensen
谢谢Anthony,可以简单澄清一下吗?format='%(name)s是否表示persons表中主键现在是字段'name'而非'id'? - Josyula Krishna
不,format参数仅用于显示目的--它不会以任何方式影响基础数据或主键。 - Anthony
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接