创建更新页面(使用SQLFORM)来更新表的元组

时间:2014-07-02 12:02:14

标签: python web2py

我正在传递我想要更新其元组的表的主键。 这是我传递product_id的视图。

{{for row in rows:}}
        <tr>
          <td>{{=x}}{{x=x+1}}</td>
            <td>{{=row.product_id}}</td>
            <!-- EDIT -->
            <td><form action="{{=URL('pro_edit')}}" method="post">
                <input name="pid" value="{{=row.product_id}}" type="hidden">
                <input type="submit" value="Edit">
                </form></td>
       <tr> {{pass}}

现在这是我拿起它的控制器。我尝试了两件事

testform = SQLFORM(db.products,db(db.products.product_id==request.post_vars.pid).select(), 
fields=['product_id','price','pro_type','tags','category','description']))
return dict(form=testform)

       --------------OR-------------

dform = SQLFORM(db.products,record=db(db.products.product_id==request.post_vars.pid).select(),
fields=['product_id','price','pro_type','tags','category','description'])
return dict(form=dform)

但这不起作用。 它的生成错误

TypeError: list indices must be integers, not str

1 个答案:

答案 0 :(得分:0)

db(db.products.product_id==request.post_vars.pid).select()

即使上面只返回一条记录,它也是一个Rows对象而不是Row对象,所以你必须显式提取第一行,你可以这样做:

db(db.products.product_id==request.post_vars.pid).select().first()

另一个选择是使用以下快捷方式:

db.products(product_id=request.post_vars.pid)