2012-01-05 17 views
8

デシベル。define_table( '人、フィールド( '名前')、フォーマット= '%(名前)S')表現形式

何このフォーマットはここで何をしますか?

答えて

10

引数は、 'person'テーブルを参照する他のテーブルのフィールドをどのように表示するかを決定するために使用されます。たとえば、ユーザーが定義した場合:

db.define_table('dog', 
    Field('name'), 
    Field('owner', db.person) 

「所有者」フィールドには、(すなわち、それは人のテーブルからのレコードの記録IDを保存する)「人のテーブルを参照する参照フィールドです。ほとんどの場合、 'dog'テーブルのデータを表示するときには、 'owner'フィールドに格納されている生のdb.personレコードIDを表示したくないので意味がありません。代わりに、それは人の '名前'を表示する方が理にかなっています。 web2pyでは、表のformat属性により、フォームと表の両方でこの自動置換が可能になります。

'dog'テーブルに基づいてSQLFORMを作成すると、 'owner'フィールドのドロップダウンリストが自動的に生成され、 'person'テーブル定義の引数がformat='%(name)s'であるため、 (フォーム提出時に、 'owner'フィールドに名前ではなく関連付けられたレコードIDが保存されますが)レコードIDの代わりにdb.personの名前が表示されます。

また、 'dog'テーブルのレコードをSQLTABLEまたはSQLFORM.gridに表示すると、 'owner'フィールドに所有者のレコードIDではなく所有者の名前が表示されます。

http://web2py.com/books/default/chapter/29/6#Record-representationを参照してください。

+0

ありがとうございました。私がここで理解していないのは、引数の最後の**%** ** ** **は何を意味するのですか? – Jensen

+0

これはちょうど標準の[Python文字列書式記法]です(http://docs.python.org /library/stdtypes.html#string-formatting-operations)。 'format'文字列には、テーブル内のどのフィールド名も含めることができます。 – Anthony

+0

ありがとうございます。 – Jensen

関連する問題