如何在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文件中执行序列化程序保存操作