Вычисляемые поля в web2py sqlgrid

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

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

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

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

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

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

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

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

licensed under cc by-sa 3.0 with attribution.