如何在django rest框架中对序列化程序Validation的request.data进行更改?

如何在django rest框架中对序列化程序Validation的request.data进行更改?,django,django-rest-framework,Django,Django Rest Framework,所以我正在制作一款具有以下结构的测验应用程序 class UserQuizRecord(models.Model): user = models.OneToOneField(User) quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE, related_name='userrecord') score = models.FloatField(default=0.00) 我有它的序列化类 class UserQ

所以我正在制作一款具有以下结构的测验应用程序

class UserQuizRecord(models.Model):
    user = models.OneToOneField(User)
    quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE, related_name='userrecord')
    score = models.FloatField(default=0.00)
我有它的序列化类

class UserQuizRecordSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserQuizRecord
        fields = ('user', 'quiz','score')
这是views.py文件和我提供的详细路径,我希望将用户添加到views函数中的request.data或serializer中。我没有找到正确的方法来做这件事

class QuizView(viewsets.ModelViewSet):
    serializer_class = QuizSerializer
    queryset = Quiz.objects.all()
    model = Quiz

    @detail_route(methods=['post'], permission_classes=[AllowAny], url_path='rank')
    def rank(self, request, pk=None):
        request.data.quiz = Quiz.objects.get(pk=pk)
        serializer = UserQuizRecordSerializer(data = request.data )
        if serializer.is_valid():
            serializer.save()
            rank = UserQuizRecord.objects.filter(Q(quiz=request.data.quiz.id),Q(score__gte=request.data.score)).count()
            return Response({'rank':rank}, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)  

执行此操作的最佳方法是什么?

可能重复@YasinBahtiyar,但该答案不用于在添加用户字段后检查序列化程序的有效性。我想在views.py文件中执行序列化程序保存操作