将数据库字段的默认值设置为web2py中另一个字段的值

时间:2013-04-29 13:43:07

标签: python web2py

db.define_table('mytable',
    Field('start_number', 'double', requires=IS_NOT_EMPTY()),
    Field('current_number', 'double', default=mytable.start_number, requires=IS_NOT_EMPTY()))

当网站上发生某些事情时,current_number可以更改为其他内容,但始终以默认值start_number开头(即创建条目时)。每个条目都有不同的start_number

我一直收到一条错误消息,指出mytable无法找到,可能是因为它还没有完全定义。是否仍然可以将current_number的默认值设置为start_number

1 个答案:

答案 0 :(得分:0)

如果总是通过表单提交进行插入,您可以这样做:

Field('current_number', 'double', default=request.post_vars.start_number, ...)

另一种选择是使其成为计算字段:

Field('current_number', 'double', compute=lambda r: r.start_number, ...)

但是,默认情况下,计算字段不会显示在使用SQLFORM创建的表单中,因此,如果要在更新表单中显示字段,则必须明确指定要在表单上显示的字段或暂时将字段的“计算”属性设置为无。