首页 文章

web2py SQLFORM.factory默认不更新

提问于
浏览
0

我在一个页面上有一个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作为更大页面的一部分 .

1 回答

  • 0

    几个小时之后,这是你如何做到的(sorta hackey但它的工作原理)

    #This is a kludge to get the right default visibility selected
    if request.vars.visible == None:
        visibleDefault = theDefault
    else:
        visibleDefault = request.vars.visible
    
    form = SQLFORM.factory(
           FIELD(Field('visible',requires=IS_IN_SET(['everyone','subscribers','friends','nobody'],zero=None),default=visibleDefault),
           table_name='table')
    
    if form.accepts(request,session,dbio=True):
        if form.vars.visible != theDefault:
            db(row).update(visibility = form.vars.visible)
    

相关问题