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

Python 将数据库字段的默认值设置为web2py中另一个字段的值,python,web2py,Python,Web2py,当网站上发生某种情况时,current_number可以更改为其他内容,但总是以默认值start_number开始(即,创建条目时)。每个条目都有不同的起始编号 我一直收到一个错误,说找不到mytable,可能是因为它还没有完全定义。是否仍可以将current\u number的默认值设置为start\u number?如果插入始终通过表单提交完成,您可以执行以下操作: db.define_table('mytable', Field('start_number', 'double',

当网站上发生某种情况时,
current_number
可以更改为其他内容,但总是以默认值
start_number
开始(即,创建条目时)。每个条目都有不同的
起始编号


我一直收到一个错误,说找不到
mytable
,可能是因为它还没有完全定义。是否仍可以将
current\u number
的默认值设置为
start\u number

如果插入始终通过表单提交完成,您可以执行以下操作:

db.define_table('mytable',
    Field('start_number', 'double', requires=IS_NOT_EMPTY()),
    Field('current_number', 'double', default=mytable.start_number, requires=IS_NOT_EMPTY()))
另一个选项是将其设置为计算字段:

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

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

我这样做过,但没有成功。使用default=不会在INSERT上定义字段,COMPUTE=也会在INSERT上重新定义字段,这是我不喜欢做的。不确定你在问什么-也许可以打开一个新问题,解释你想要实现的目标。Anthony,你在这里的回答很有用
Field('current_number', 'double', compute=lambda r: r.start_number, ...)