这是我的模型:
class Answer(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE, related_name='answers')
answer = models.CharField(max_length=1000, default="", blank=False)
author = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
createdAt = models.DateTimeField(auto_now_add=True)
upVotes = models.IntegerField(default=0)
downVotes = models.IntegerField(default=0)
def __str__(self):
return str(self.answer)
以下是序列化程序:
class AnswerSerializer(serializers.ModelSerializer):
votes = serializers.SerializerMethodField(method_name='get_votes', read_only=True)
class Meta:
model = Answer
fields = ('id', 'question', 'answer', 'author', 'createdAt', 'votes')
def get_votes(self, obj):
if obj.upVotes and obj.downVotes:
total_votes = (obj.upVotes + obj.downVotes)
return total_votes
以下是我的赞成票:
@api_view(['POST'])
@permission_classes([IsAuthenticated])
def upvote(request, pk):
answer = get_object_or_404(Answer, id=pk)
author=request.user
voter = upVote.objects.filter(author=author, answer=answer)
if voter.exists():
return Response({
'details':'You cannot vote twice'
})
else:
upVote.objects.create(
answer=answer,
author=author
)
answer.upVotes += 1
answer.save()
return Response({
'details':'Vote added'
})
如何找到总票数,这应该定向到答案模型.如何在串行化程序中完成这类操作?