私は現在、ユーザーが検索フォーム (html) で適切なフィールドをすべて選択し、値を web2py クエリに渡すページに取り組んでいます。
このクエリの作成に問題がありますか? HTMLフォームから値を実際にweb2pyクエリに渡してデータベースに対して実行する方法を知りたいですか?
フォームを web2py に (GET または POST 経由で) 送信すると、すべてのフォーム変数が利用可能になります(詳細については、ディスパッチとオブジェクトrequest.vars
に関する本のセクションと、フォームに関する章を参照してください)。request
したがって、次のようなことができます。
def search():
rows = None
if request.vars:
query = reduce(lambda a, b: (a & b),
(db.mytable[var] == request.vars[var] for var in request.vars))
rows = db(query).select()
return dict(rows=rows)
reduce()
ジェネレーター式を使用することは、次のようなクエリを作成することと同じであることに注意してください。
(db.mytable.field1 == request.vars.field1) & \
(db.mytable.field2 == request.vars.field2) & \
...
(db.mytable.fieldN == request.vars.fieldN)