web2py数据库中的表示格式

时间:2012-01-05 15:19:30

标签: format web2py representation

  
    
      

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

    
  

这种格式在这里做什么?

1 个答案:

答案 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