web2py sqlgrid中的计算字段

1 投票
1 回答
2503 浏览
提问于 2025-04-17 12:47

Web2py有几种方法可以处理计算字段,但文档里提到,懒字段(lazy fields)“默认情况下不会在表格中显示”,因为它们没有像其他字段那样的属性。实际上,即使请求了这个字段,它似乎也无法在SQLFORM.grid中使用。我在包含懒字段时会遇到错误。

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

当我把懒字段放进字段列表时。

db.mytable.myfield = Field.Lazy(lambda row: "calc")
  • 我可以把懒字段放进表格里吗?
  • 显示包含计算字段的表格的推荐方法是什么?

1 个回答

4

很遗憾,我觉得在SQLFORM.grid中显示虚拟字段没有简单的方法。你可以使用“links”这个参数,把每个虚拟字段作为链接添加进去(如果“links”是一个字典,那么每个项目就会变成网格中的一列)。

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

需要注意的是,在这种情况下,你不能指定“fields”参数(也就是说,你不能只选择部分字段放进网格)——这是因为虚拟字段的功能需要所有字段才能正常工作。如果你想隐藏某些字段,可以把它们的“readable”属性设置为False。

另一个选择可能是计算字段

撰写回答