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を格納します)。ほとんどの場合、「dog」テーブルのデータを表示する場合、「owner」フィールドに格納されている生のdb.personレコードIDは意味がないため、表示したくありません。代わりに、人の「名前」を表示する方が理にかなっています。web2pyでは、format
テーブルの属性により、フォームとテーブルの両方でこの自動置換が可能になります。
'dog'テーブルに基づいてSQLFORMを作成すると、'owner'フィールドのドロップダウンリストが自動的に生成さformat='%(name)s'
れ、'person'テーブル定義への引数により、ドロップダウンリストにdbが表示されます。レコードIDの代わりに.person名(フォームの送信時に、「owner」フィールドには名前ではなく関連するレコードIDが格納されます)。
また、SQLTABLEまたはSQLFORM.gridの「dog」テーブルのレコードを表示する場合、「owner」フィールドには、所有者のレコードIDではなく所有者の名前が表示されます。
http://web2py.com/books/default/chapter/29/6#Record-representationを参照してください。