2012-02-10 40 views
1

Web2py有几种计算字段的方法,但文档指出,懒字段“在表中默认没有可视化”,因为它们不带有像_这样的属性。实际上,即使请求字段,它们似乎也无法在SQLFORM.grid中可用。我得到错误web2py中的计算字段sqlgrid

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

当我在字段列表中包含惰性字段时。

db.mytable.myfield = Field.Lazy(lambda row: "calc") 
  • 我可以把一个懒惰场到网格?
  • 什么是推荐的方式来显示包含计算字段的网格。

回答

4

不幸的是,我不认为有一种简单的方法来显示SQLFORM.grid中的虚拟域。你可以做的是使用“链接”参数,并添加每个虚拟领域作为一个链接(如果“链接”是一个字典,每个项目将成为一个单独的列在网格中)。

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

注意,在这种情况下,你不能指定“领域”的说法(即,你不能仅指定包含在网格中的字段的子集) - 这是因为虚拟领域的功能需要的所有为了工作领域。如果您需要隐藏某些字段,则可以将其“可读”属性设置为False。

另一种选择可能是computed fields

+0

感谢您的信息安东尼。将计算字段用作只读字段的能力是对.grid的一个奇怪的遗漏。我想知道如果简单地将属性添加到计算的字段对象将使可用或如果它更复杂。 – 2012-02-13 16:33:02

+0

+1为可读的属性提示。我想重新格式化一个没有重复的字段,这就是解决方案。 – 2014-04-29 00:00:43