Получение KeyError: 'answers' при использовании validated_data.pop('answers'), даже если он получает правильные данные

Я пытаюсь определить метод create() в моих вложенных сериализаторах, изучая документацию. Когда я печатаю validated_data.pop и в нем есть ДАННЫЕ, которые я запрашивал, но он возвращает keyerror, что не имеет смысла, так как в нем есть данные.

Ошибка: answers_data = validated_data.pop('answers') KeyError: 'answers'

serializers

from rest_framework import serializers

from .models import Question, Answer



class AnswerSerializer(serializers.ModelSerializer):
    """Serialize Answer model"""

    class Meta:
        model = Answer
        fields = ('title', 'body', 'slug', 'author', 'question')
        lookup_field = 'slug'
        

# https://stackoverflow.com/questions/55031552/how-to-access-child-entire-record-in-parent-model-in-django-rest-framework
class QuestionSerializer(serializers.ModelSerializer):
    """Serialize Question model"""

    #This answer variable and the fields 'answer' you refer to has to be the SAME but
    #These can change exp: 'aaa'

    answer = AnswerSerializer(read_only=False, source='answers', many=True,)

    print("@@@@@@")
    print(answer)
    print("@@@@@@")
    print(type(answer))

    class Meta:
        model = Question 
        fields = ('title', 'slug', 'author', 'category', 'answer',)
        lookup_field = 'slug'


    def create(self, validated_data):

        print("@@@@@@")
        print("@@@@@@")
        print(validated_data.pop('answers'))
        print("@@@@@@")
        print("@@@@@@")

        answers_data = validated_data.pop('answers')
        question = Question.objects.create(**validated_data)

        for answer_data in answers_data:
            Answer.objects.create(question=question, **answer_data)
        return question

views.py

from django.shortcuts import render
from .models import Question, Answer
from django.conf import settings
from rest_framework import viewsets
from rest_framework.authentication import TokenAuthentication

from .serializers import QuestionSerializer
#from .permissions import UpdateOwnPrice
from rest_framework.permissions import IsAdminUser



class QuestionViewSet(viewsets.ModelViewSet):
   """CRUD """
   serializer_class = QuestionSerializer
   queryset = Question.objects.all()
   authentication_classes = (TokenAuthentication,)
   #permission_classes = (UpdateOwnPrice,)
   lookup_field = 'slug'


modesl.py

from django.db import models
from django.conf import settings
from django.db.models import Q
from django.utils import timezone
from django.urls import reverse



class Category(models.Model):
    name= models.CharField(max_length=100)

    def __str__(self):
        return self.name



class Question(models.Model):
    title= models.CharField(max_length= 100)
    body= models.TextField()
    slug= models.SlugField(unique= True)
    date_posted= models.DateTimeField(default=timezone.now)
    author= models.ForeignKey(settings.AUTH_USER_MODEL, on_delete= models.CASCADE, related_name = 'questions')
    category= models.ForeignKey(Category, on_delete= models.CASCADE, related_name = 'questions')

    #objects= QnAManager()
    
    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('home')

    

class Answer(models.Model):
    title= models.CharField(max_length= 100)
    body= models.TextField()
    slug= models.SlugField(unique= True)
    date_posted= models.DateTimeField(default=timezone.now)
    author= models.ForeignKey(settings.AUTH_USER_MODEL, on_delete= models.CASCADE, related_name = 'answers')
    question= models.ForeignKey(Question, on_delete= models.CASCADE, related_name = 'answers')
    
    #objects= QnAManager()

    def __str__(self):
        return self.title

    def get_absolute_url(self): 
        return reverse('home')

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