我在一个页面上有一个 SQLFORM.factory,我用来(除其他外)更新表中的特定字段。该字段是我这样制作的下拉表
Field('visibility',requires=IS_IN_SET(['everyone','subscribers','friends','nobody']))
所以 SQLFORM.factory 中的字段看起来是一样的。不同之处在于我希望 SQLFORM.factory 中的默认值是特定表中该字段的当前值。通过设置默认值。我对表中所需的条目进行查询,选择该字段,这将成为我的默认选项。第一次加载时完美。我在表单接受后进行更新,并且更新功能正常:
if subForm.accepts(request,session,dbio=True):
if myForm.vars.visible != theDefault:
db(row).update(visibility = subForm.vars.visibility)
如果您提交页面,则所选选项不是表中该字段的当前值,它始终是之前的值。如果我查看我的数据库管理员,表格更新得很好,但我无法获取正确的选项来选择我的默认值。如果我的默认值是“所有人”,然后我选择并提交“朋友”,那么在提交后重新加载页面时选择的仍然是“所有人”如果我然后选择并提交“没人”,刷新后它是“朋友”。
如果有帮助,我将显示此 SQLFORM.factory 所在的视图,并将 iFrame 显示为更大页面的一部分。