2016-04-28 15 views
0

私はWeb2Pyをかなり新しくしています。私はいくつかの助けを望んでいます。Web2Pyの値の取得/投稿

私はレビューDBとゲームDBを持っています。

ユーザーは現在、リストからゲームをクリックして、レビューに残すことができるページに移動します。

レビューをDBに保存できますが、対応するゲームを参照することができません。

DB:

db.define_table('games', 
      Field('title',requires=IS_NOT_EMPTY()), 
      Field('description','text',requires=IS_NOT_EMPTY())) 

db.define_table('reviews', 
      Field('title',requires=IS_NOT_EMPTY()), 
      Field('review','text',requires=IS_NOT_EMPTY())) 

Default.py:

def review(): 
getTitle = db.games(request.args(0)) or redirect(URL('default', 'index')) 
formReview = SQLFORM(db.reviews,fields = ['title','review']).process() 
if formReview.accepted: redirect(URL('index')) 
return dict(formReview=formReview, getTitle=getTitle) 

がreview.html:

{{extend 'layout.html'}} 
<h2>Review a game</h2> 
<h2>{{=getTitle.title}}</h2> 
{{=formReview}} 

私は 'レビュー' のフィールドを作成する必要が推測していること'request.args'の値が得られます。確信はないけど?

答えて

1

あなたはまず、このようなgames表にforeign keyを保持するために、あなたのreviewテーブルを拡張する必要があります

db.define_table('reviews', 
      Field('title',requires=IS_NOT_EMPTY()), 
      Field('review','text',requires=IS_NOT_EMPTY()), 
      Field('game_id', 'reference games')) 

だからあなたはレビューがあるゲームのための参照を持っています。この追加情報を使用すると、ゲームのすべてのレビューを選択してビュー内でレンダリングできるはずです。

for row in db(db.reviews.game_id == 1).select(): 
    print row.title # just an example 

そしてもちろんあなたも新しいレビューエントリを作成するときに、対応するgame_idを保存する必要があります。)

formReview = SQLFORM(db.reviews,fields = ['game_id', 'title','review']).process() 
+0

あなたが投稿だから、最後の行、私は後に「formReview.accepted:」ことを挿入します? – Gareth

+0

あなたのニーズに合わせて自分の答えを編集しました – salomonderossi

+0

唯一のことは、ゲームテーブルで一意になるため、ゲームIDを自動的に投稿することを願っています。 – Gareth

関連する問題