Вычисляемые поля в web2py sqlgrid - PullRequest
1 голос
/ 10 февраля 2012

В Web2py есть несколько методов для вычисляемых полей, но в документации говорится, что ленивые поля «по умолчанию не отображаются в таблицах», потому что они не имеют атрибутов, таких как _.На самом деле, они не могут быть доступны в SQLFORM.grid, даже если поле запрошено.Я получаю сообщение об ошибке

AttributeError: 'FieldLazy' object has no attribute 'readable'

Когда я включаю ленивое поле в список полей.

db.mytable.myfield = Field.Lazy(lambda row: "calc")
  • Можно ли поместить ленивое поле в сетку?
  • Каков рекомендуемый способ отображения сетки, включающей вычисляемые поля.

1 Ответ

4 голосов
/ 11 февраля 2012

К сожалению, я не думаю, что есть простой способ отобразить виртуальные поля в SQLFORM.grid. Что вы можете сделать, это использовать аргумент «ссылки» и добавить каждое виртуальное поле в качестве ссылки (если «ссылки» - это словарь, каждый элемент станет отдельным столбцом в сетке).

links=[dict(header='myfield', body=lambda row: row.myfield)]

Обратите внимание, что в этом случае вы не можете указать аргумент "fields" (т.е. вы не можете указать только подмножество полей для включения в сетку) - это потому, что функция виртуального поля требует, чтобы все поля были работать. Если вам нужно скрыть некоторые поля, вместо этого вы можете установить для их «читабельного» атрибута значение False.

Другой вариант может быть вычисляемые поля .

...