I am trying to update the nested serializer in it but, it saying queryset has no attribute, this is the code below , please help out.
Traceback
Traceback (most recent call last):
File "C:\Users\HP\Desktop\roy\project\HelpMe\sunny\backend\venv\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
File "C:\Users\HP\Desktop\roy\project\HelpMe\sunny\backend\venv\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\HP\Desktop\roy\project\HelpMe\sunny\backend\venv\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "C:\Users\HP\Desktop\roy\project\HelpMe\sunny\backend\venv\lib\site-packages\django\views\generic\base.py", line 84, in view
return self.dispatch(request, *args, **kwargs)
File "C:\Users\HP\Desktop\roy\project\HelpMe\sunny\backend\venv\lib\site-packages\rest_framework\views.py", line 509, in dispatch
response = self.handle_exception(exc)
File "C:\Users\HP\Desktop\roy\project\HelpMe\sunny\backend\venv\lib\site-packages\rest_framework\views.py", line 469, in handle_exception
self.raise_uncaught_exception(exc)
File "C:\Users\HP\Desktop\roy\project\HelpMe\sunny\backend\venv\lib\site-packages\rest_framework\views.py", line 480, in raise_uncaught_exception
raise exc
File "C:\Users\HP\Desktop\roy\project\HelpMe\sunny\backend\venv\lib\site-packages\rest_framework\views.py", line 506, in dispatch
response = handler(request, *args, **kwargs)
File "C:\Users\HP\Desktop\roy\project\HelpMe\sunny\backend\quiz\views.py", line 39, in put
serializer.save()
File "C:\Users\HP\Desktop\roy\project\HelpMe\sunny\backend\venv\lib\site-packages\rest_framework\serializers.py", line 207, in save
self.instance = self.update(self.instance, validated_data)
File "C:\Users\HP\Desktop\roy\project\HelpMe\sunny\backend\quiz\serializers.py", line 47, in update
answer = instance.answer.all()
AttributeError: 'QuerySet' object has no attribute 'answer'
[12/Jun/2022 19:13:39] "PUT /quiz/q/django/1/ HTTP/1.1" 500 108967
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