这是我的模型:

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'
        })

如何找到总票数,这应该定向到答案模型.如何在串行化程序中完成这类操作?

推荐答案

def get_votes(self, obj):
    total_votes = 0
    if obj.upVotes is not None and obj.downVotes is not None:
        total_votes = (obj.upVotes + obj.downVotes)
        return total_votes

这是因为无论是upvote或downvote是没有. 你可以的

Django相关问答推荐

测试 - 两个类共享相同的登录代码,但它只能在一个类中工作

无法使用 django-filters 进行过滤

lower() 在 None 上被调用

如何将数据(具体归档)从views.py 传递到models.py

来自 Django 应用程序的日志(log)消息未上传到 AWS CloudWatch

Django 表单字段必填和可选配置

将现有 auth.User 数据迁移到新的 Django 1.5 自定义用户模型?

Python 和 Django OperationalError (2006, 'MySQL server has gone away')

在 Django REST Framework 中找不到资源时如何返回 404

URL命名空间的一个真实例子

django.core.exceptions.ImproperlyConfigured:请求设置 USE_I18N,但未配置设置

ImportError:升级到 Django 4.0 后无法从 'django.conf.urls' 导入名称 'url'

在 Django 中扩展 urlize

Django表单集:首先需要?

整数的Python正则表达式?

使用 get_object_or_404 获取数据库值

在 Django 中使用 LiveServerTestCase 时使用代码登录

django-getlist()

关闭 Django Rest Framework ModelViewSet 的自动分页

获取'str'对象在Django中没有属性'get'