2014年2月9日日曜日

web2pyのクエリー

web2pyでtypeがdatetimeなフィールドのyearなどでクエリーを作成する方法でハマった。
#モデル
#db.py
db.define_table('post',
    Field('title'),
    Field('pub_date', 'datetime'),
    format = '%(title)s')

#コントローラー
#default.py
def date():
    rows = db(db.post.pub_date.year == 2014).select()
    return dict(rows=rows)
このようなコードを書いて実行するとdb.post.pub_date.year == 2014がQueryを返さずboolを返していてエラーになっていた。
正しくは
#モデル
#db.py
db.define_table('post',
    Field('title'),
    Field('pub_date', 'datetime'),
    format = '%(title)s')

#コントローラー
#default.py
def date():
    rows = db(db.post.pub_date.year() == 2014).select()
    return dict(rows=rows)
yearではなくyear()にしないとQueryにならなかった。
web2pyは使いやすいがこのへんのドキュメントがないととても困る。

0 件のコメント:

コメントを投稿