我正在传递我想要更新其元组的表的主键。 这是我传递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
答案 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)