我想使用定义为:
的数据库表生成sqlform.griddb.define_table('ClientInfo',
Field('HostID', type='text', label='HostID'),
Field('MACAddress', type='text', label='MACAddress'),
Field('MachineName', type='text', label='MachineName'),
Field('IPAddress', type='text', label='IPAddress'),
Field('TimeOffset', label='TimeOffset'),
Field('RunningAs', type='text', label='RunningAs'),
Field('SystemVersion', type='text', label='SystemVersion'),
Field('OSType', type='integer', label='OSType'),
Field('AgentVersion', type='text', label='AgentVersion'),
Field('FirstCheckin', type='datetime', label='FirstCheckin'),
Field('LastCheckIn', type='datetime', label='LastCheckIn')
)
OSType字段是一个枚举器类型的整数,因此我想在显示之前更改它,以便它不是通过整数而是通过字符串来标识操作系统类型(例如0 = Windows XP,1 = Windows 2012年,什么不是)。是否有捷径可寻?
答案 0 :(得分:0)
要更改网格中的显示以及只读表单,请使用该字段的represent
属性(请参阅文档的this section末尾)。
您还可以添加IS_IN_SET
验证程序,默认情况下会生成任何形式的选择窗口小部件(例如,网格创建和编辑表单)。您可以将字典或元组列表传递给验证器,以指定一组与值关联的标签(请参阅文档的this section末尾):
OS_TYPES = {
0: 'Windows XP',
1: 'Windows 2012',
...
}
db.define_table('ClientInfo',
...
Field('OSType', type='integer',
requires=IS_IN_SET(OS_TYPES), # Results in select widget in forms.
represent=lambda v, r: OS_TYPES[v]), # Sets display value in grid.
...)