如何将答案的投票链接到用户的投票?

时间:2017-06-23 09:47:40

标签: python html css django web

我正在开发Django项目,用户可以提问并回答问题。同时用户可以像stackoverflow答案一样投票。现在我想链接用户的答案和投票的投票数量。例如,用户A回答了一个问题并且他的回答获得了10票,再次用户A回答了另一个问题并获得了5票。现在这个用户的投票应该是15。 我怎样才能做到这一点?有任何想法吗? 提前致谢。 这是我的模特:

session_start()

这是我的观点:

class Answer(models.Model):
    user = models.ForeignKey(msignup, related_name="uanswer")
    question = models.ForeignKey(Question)
    description = models.TextField(max_length=2000)
    create_date = models.DateTimeField(auto_now_add=True)
    update_date = models.DateTimeField(auto_now=True, auto_now_add=False)
    votes = models.IntegerField(default=0)
    is_accepted = models.BooleanField(default=False)
    upload = models.FileField(upload_to=upload_location, null=True, blank=True)

class Meta:
    verbose_name = 'Answer'
    verbose_name_plural = 'Answers'
    ordering = ('-is_accepted', '-votes', 'create_date',)

def __str__(self):
    return self.description

def accept(self):
    answers = Answer.objects.filter(question=self.question)
    for answer in answers:
        answer.is_accepted = False
        answer.save()
    self.is_accepted = True
    self.save()
    self.question.has_accepted_answer = True
    self.question.save()

def calculate_votes(self):
    up_votes = Activity.objects.filter(activity_type=Activity.UP_VOTE,
                                       answer=self.pk).count()
    down_votes = Activity.objects.filter(activity_type=Activity.DOWN_VOTE,
                                         answer=self.pk).count()
    self.votes = up_votes - down_votes
    self.save()
    return self.votes

1 个答案:

答案 0 :(得分:0)

您可以查询通过外键映射到特定用户的所有投票,然后使用django's aggregation mechanism对它们求和:

#user_obj is an instance of the user whose votes you want to sum over

sum_of_votes = Answer.objects.filter(user=user_obj).aggregate(Sum('votes'))