Почему у меня возникает AttributeError: 'QuerySet' object has no attribute 'answer' on django serializer "PUT" method

Я пытаюсь обновить вложенный сериализатор, но он говорит, что у queryset нет атрибута, вот код ниже, пожалуйста, помогите.

Views.py

class QuizQuestionDetail(APIView):

def get(self, request, format=None, **kwargs):
    quizz = Question.objects.filter(id=kwargs['pk'])
    serializer = QuestionSerializer(quizz, many=True)
    return Response(serializer.data)

def put(self, request, format=None, **kwargs):
    quizz = Question.objects.filter(id=kwargs['pk'])
    serializer = QuestionSerializer(quizz, data=request.data)
    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Serializer.py

class AnswerSerializer(serializers.ModelSerializer):

class Meta:
    
    model = Answer
    fields = [
        'id',
        'answer_text',
        'is_right',
    ]

class QuestionSerializer(serializers.ModelSerializer):

answer = AnswerSerializer(many=True)

class Meta:
    model = Question
    fields = ['id','quiz', 'title','answer', ]

def create(self, validated_data):
    answers_data = validated_data.pop('answer')
    question = Question.objects.create(**validated_data)
    for answer_data in answers_data:
        Answer.objects.create(question=question, **answer_data)
    return question

def update(self, instance, validated_data):
    answers_data = validated_data.pop('answer')
    answer = instance.answer.all()
    answers = list(answer)
    instance.quiz = validated_data.get('quiz', instance.quiz)
    instance.title = validated_data.get('title', instance.title)
    instance.save()

    for answer_data in answers_data:
        answer = answers.objects.get(pk=answer_data['id'])
        answer.answer_text = answer_data.get('answer_text', answer.answer_text)
        answer.is_right = answer_data.get('is_right', answer.is_right)
        answer.save()
    return instance

serializer = QuestionSerializer(quizz, data=request.data) вы передаете queryset без установки many=True

метод фильтра возвращает кверисет, даже если в нем один объект, для передачи кверисета в сериализатор необходимо установить множество атрибутов

serializer = QuestionSerializer(quizz, data=request.data, many=True)

Вернуться на верх