私はディスカッションフォーラムがある場所にウェイトを持っています。すべての質問には固有のIDがあり、回答には質問IDを参照する外部キーを持つ一意のIDもあります。upvote/downvoteのデータベース設計(英語)はディスカッションフォーラムにありますか?
私がログインしているユーザーを持っている。AJAXを使用して、私は(、、upvote/downvoteユーザー名をQID/AID)のデータを送信することができます.But、いくつかの問題があります。
ユーザーがログインするたびに、彼が質問を開いたときに、以前のupvotesとdownvotesを表示する必要があります。
ユーザーが同じ質問をdownvote /複数回upvoteすることはできません。彼が+1する質問をアップvしたように、彼はそれを下降させるだけで、それをもう一度upvoteすることはできません。
私に従った解決策。私はusernameがプライマリキーで、別の属性が彼がやったすべてのupvotesとdownvotesのリストであるテーブルを維持することを考えています。例:ユーザーがログインするたびに
(username, array)
(baqir, up_A001 up_A050 down_Q011 up_Q123)
、私はこの配列を取り、そのままでは利用者の以前のすべてのupvotesとdownvotesがあることを確認してください。新しい投票がある場合は、それを配列に追加します。
もっと良い解決策はありますか?
P.S.必要ではなく、現在のデータベース構造。
class Question(models.Model):
QID = models.CharField(default="",max_length=1000, primary_key=True)
title = models.CharField(max_length=30, default="")
description = models.CharField(max_length=1055, default="")
date = models.DateTimeField(default=datetime.now, blank=True)
username = models.CharField(max_length=6, default="")
votes = models.IntegerField(default=0)
approved = models.BooleanField(default=False)
def __str__(self):
return self.title
class Answer(models.Model):
AID = models.CharField(max_length=1000, default="", primary_key=True)
QID = models.ForeignKey(Question,on_delete=None)
description = models.CharField(max_length=1055, default="")
date = models.DateTimeField(default=datetime.now, blank=True)
username = models.CharField(max_length=6, default="")
votes = models.IntegerField(default=0)
approved = models.BooleanField(default=False)
def __str__(self):
return self.AID
私はDjangoを使用しています。そして、私は基本的に質問と回答の投票に実装されたstackoverflowが何であれ欲しいです。
あなたは単にquestionid/answer idとuseridにユニーク制約を設定しますか? – chris85
Pythonの質問にPHPでタグを付ける人がますます増えています。なぜか分からない。 – apokryfos
あなたは、(QID/AID、username)を属性として持つ別のテーブルを作成することを意味しますか? –