формат представления в базе данных web2py - PullRequest
8 голосов
/ 05 января 2012

db.define_table ('персона', поле ('имя'), формат = '% (имя) с')

Что этот формат делает здесь?

1 Ответ

10 голосов
/ 05 января 2012

Аргумент format используется для определения того, как будут отображаться поля в других таблицах, которые ссылаются на таблицу person.Например, если вы определите:

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

Поле «владелец» является справочным полем, которое ссылается на таблицу «человек» (т. Е. Хранит идентификаторы записей из таблицы «человек»).В большинстве случаев, когда вы отображаете данные из таблицы 'dog', вы не хотите отображать необработанный идентификатор записи db.person, который хранится в поле 'owner', потому что это не имеет никакого значения - вместо этого,имеет больше смысла отображать «имя» человека.В web2py атрибут format таблицы включает автоматическую подстановку как в формах, так и в таблицах.

Когда вы создаете SQLFORM на основе таблицы 'dog', он автоматически генерирует раскрывающийся список дляполе 'owner', и из-за аргумента format='%(name)s' для определения таблицы 'person' в раскрывающемся списке будут отображаться имена db.person вместо идентификаторов записей (даже если после отправки формы поле 'owner' будетхранить идентификатор связанной записи, а не имя).

Кроме того, если вы отображаете записи из таблицы «dog» в SQLTABLE или SQLFORM.grid, в поле «owner» будет отображаться имя владельца, а неидентификатор записи владельца.

См. http://web2py.com/books/default/chapter/29/6#Record-representation.

...