我正在开发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
答案 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'))