質問がある単純なアプリケーションを構築しています。各質問には2進投票(yes/no)があります。ユーザーあたりの投票を記録したいので、各ユーザーは質問ごとに1つの投票しか得られません(スタックのオーバーフローやredditに似ています)。モデルセーブメソッドから別のモデルのデータを操作する
質問にVote_noとVote_yes intフィールドがあります。これらは、投票が追加されるたびにトランザクションで更新される必要があります。 Voteモデルのsaveメソッドからこれを行うことはできますか?
class Question(models.Model):
part_isit = models.CharField(max_length=45)
part_if = models.CharField(max_length=90)
votes_no = models.IntegerField()
votes_yes = models.IntegerField()
author = models.ForeignKey(User)
create_date = models.DateField(auto_now_add=True)
VOTE_CHOICES = (
('Y', 'Yes'),
('N', 'No'),
)
class Vote(models.Model):
choice = models.CharField(max_length=1, choices=VOTE_CHOICES)
question = models.ForeignKey(Question)
author = models.ForeignKey(User)
create_date = models.DateField(auto_now_add=True)
def save(self):
# increment the questions vote totals
#save the vote
super(Vote, self).save();
ありがとうございます。私が本当に好きでないのは、スケーラビリティだけです。すべての投票オブジェクトをリストとして取得しています。 ORMに集約クエリを実行させたいと思います。 BTWにはタイプミスがあります(choiseは選択肢です)。 – Keyo
私の間違いは、カウントのクエリがORMでどのように行われるかです。 – Keyo