Я работаю с вложенными сериализаторами в моем проекте. Есть только одна маленькая проблема, с которой я сталкиваюсь и не могу угадать, что происходит не так.
У меня есть две модели: -
Модель 1: -
class Answer_Options(models.Model):
text = models.CharField(max_length=200)
Модель 2: -
class Quiz_Question(models.Model):
text = models.CharField(max_length=200)
possible_answers = models.ManyToManyField(Answer_Options)
correct = models.ForeignKey(Answer_Options, related_name="correct", default=None, on_delete=models.CASCADE, blank=True, null=True)
Я создал следующие сериализаторы для моих моделей выше: -
class Answer_OptionsSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Answer_Options
fields = ('url', 'text')
А для викторины Вопрос: -
class Quiz_QuestionSerializer(serializers.HyperlinkedModelSerializer):
possible_answers = Answer_OptionsSerializer(many=True)
correct = Answer_OptionsSerializer()
class Meta:
model = Quiz_Question
fields = ('url', 'text', 'possible_answers', 'correct')
def create(self, validated_data):
possible_answers_data = validated_data.pop('possible_answers')
correct_answers_data = validated_data.pop('correct')
quiz_question = Quiz_Question.objects.create(**validated_data)
if possible_answers_data:
for answer in possible_answers_data:
answer, created = Answer_Options.objects.get_or_create(text=answer['text'])
if (answer.text == correct_answers_data['text']):
quiz_question.correct = answer //Not sure why this is not getting saved
quiz_question.possible_answers.add(answer)
return quiz_question
Что происходит, когда я публикую данные через Django Rest Framework, вызывается метод create и сохраняются возможные ответы, но я не знаю, почему правильный ответ не сохраняется для этого экземпляра.
Я не получаю никаких ошибок или исключений. Также я вижу правильный ответ на странице создания нового объекта Django Rest Frameworks. Но когда я щелкаю страницу сведений об этом объекте, я вижу нулевое значение для правильного ответа.
Любая подсказка, что я делаю не так?
Пример данных JSON, которые я публикую, выглядит так: -
{
"text": "Google Headquarters are in?",
"possible_answers": [
{
"text": "USA"
},
{
"text": "Nort Korea"
},
{
"text": "China"
},
{
"text": "India"
}
],
"correct": {
"text": "USA"
}
}