Django(Python)で、teratailのような質問サイトを作成しています。
teratailには、各質問を評価するGoodボタンがあります。
これは、一度押したら、評価が+1となり、2回目押す時は評価が-1になります。
同じようなことをしたいのですが、どのようなロジックになっているのでしょうか。
私は、下記のような感じかと想像したのですが、こんな感じで作るしかないのでしょうか?
・各質問のテーブルに、Good評価したユーザーを保存するフィールド(以下、「goodフィールド」)がある。
・ユーザーが、ある質問を表示しようと呼び出したら、当該ユーザーが当該質問に対してGood評価しているユーザー一覧に含まれているかを判定する。未だGood評価していないユーザーには、Goodボタンを押すと評価が+1となるリンク付きのHtmlを送る。既にGood評価をしているユーザーには、Goodボタンを押すと評価が-1となるリンク付きのHtmlを送る。
・+1となるリンクを押したユーザーを、「Goodフィールド」に追加する。-1となるリンクを押したユーザーを、「Goodフィールド」から削除する。
・「Goodフィールド」に保存されているユーザー数をカウントして、Good評価しているユーザー数を集計し、Html上に表示する。
私は、当初、DjangoのチュートリアルのPollsにあったように作ろうと思ったのですが、これでは同一ユーザーが何回でも評価できてしまうので、どうしたらよいかと検討している次第です。
お分かりの方、どうぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/02/23 23:29 編集
2016/02/24 09:00 編集
退会済みユーザー
2016/02/24 09:38