使用SQLFORM.grid& request.args中

时间:2016-04-29 13:39:57

标签: python database web2py

目前,我正在使用HTML表格在数据库中显示所选数据。

default.py:

def show():
post = db.games(request.args(0))
reviewRows = db(db.reviews.game_id == request.args(0)).select()
return locals()

show.html

{{extend 'layout.html'}}

<h2>{{=post.title}}</h2>

<i>Desc: {{=post.description}}</i>

<h2>Reviews:</h2>
<table class="table">
    <tr>
        <th>Review title</th>
        <th>Review</th>
    </tr>
    {{for row in reviewRows:}}
    <tr>
        <td>{{=row.title}}</td>
        <td>{{=row.review}}</td>
    </tr>
    {{pass}}
</table>

但是我想使用SQL.grid以便我可以排序&amp;搜索表格。

我试过了

reviewRows = SQLFORM.grid(db.reviews.game_id == request.args(0)).select()

但这只是将我链接回索引页面。我假设它是因为它没有正确地接受论证?

default.py:

def index():
    gridHome = SQLFORM.grid(db.games, editable=False, create=False, csv=False, deletable=False, details=False, links = [lambda row: A('View Post',_href=URL("default","show",args=[row.id])), lambda row: A('Review',_href=URL("default","review",args=[row.id]))])
    return locals()

1 个答案:

答案 0 :(得分:1)

SQLFORM.grid使用URL args构建自己的URL,因此如果网格操作的基本URL已经使用了一个或多个URL args,则必须通过args参数指定:

reviewRows = SQLFORM.grid(db.reviews.game_id == request.args(0), args=request.args[:1])

上面告诉网格,在添加任何自己的URL参数之前,它构造的所有内部URL都应该包含request.args[:1]作为URL arg。

另请注意,您不应该像示例代码中那样将.select()添加到SQLFORM.grid