我已经开始将web2py用于web应用程序,并尝试使用SQLFORM.grid(...)来显示我的一个db表数据的分页列表,如下面的最小示例所示。

grid=SQLFORM.grid(query,
    links=links,
    fields=[db.example.date,db.example.foo, db.example.bar])

db.example.date字段包含UTC格式的Python datetime.datetime对象。目前,它正是这样清晰地显示出来的。但是,我希望对实际输出有更多的控制,这样我就可以设置本地时区并修改输出字符串,使其具有类似“2小时前”的内容。
正如在另一个问题[0]中看到的,我可以使用links插入新列。不幸的是,我似乎无法按这样插入的字段对行进行排序。而且,它们被插入右边,而不是实际替换我的第一列。所以这似乎不是一个解决办法。
总结一下:我如何控制最后打印db.example.date的方式?
[0]Calculated Fields in web2py sqlgrid

最佳答案

在模型中定义表时,可以实现目标。define_table中使用的字段构造函数中的represent参数将由SQLFORM.grid识别。例如,如果只想打印带有月份名称的日期,可以在模型中添加以下内容。

Field('a_date', type='date', represent=lambda x, row: x.strftime("%B %d, %Y")),

您的函数也可以转换为本地时间。

关于python - 修改Web2py中sqlform.grid()的列输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9678172/

10-11 23:03
查看更多