你可以在SQLFORM.grid中添加自定义字段/列吗?

Pit*_*ate 0 web2py

我试图使用SQLFORM.grid()一切工作找到但是我正在尝试添加一个新的field.我的查询由连接在一起的两个表组成.例如:

db.define_table('table1',
    Field('total','integer')
)
db.define_table('table2',
    Field('table1_id','integer'),
    Field('count','integer'),
)

query = (db.table1.id == db.table2.table1_id)

grid = SQLFORM.grid(query,fields=[
    db.table1.total,
    db.table2.count,
    (db.table1.total - db.table2.count) #this doesn't work
    ])
Run Code Online (Sandbox Code Playgroud)

那么是否可以添加通过数学函数生成的列,或者在这种情况下不一定需要但是两个值连接在一起?

Ant*_*ony 5

您可以使用"links"参数:

grid = SQLFORM.grid(query, fields=[db.table1.total, db.table2.count],
                    links=[dict(header='Total - Count',
                                body=lambda r: r.table1.total - r.table2.count)])
Run Code Online (Sandbox Code Playgroud)

默认情况下,所有"链接"列都显示在右侧.您可以通过将"links_placement"参数设置为"left"或"both"来更改它.