Hello.
I want to submit a nested report, and I am facing one error, don’t have any idea how to solve it.
Error output-------------------------------------------------------------------
*** ValueError: Cannot assign "OrderedDict([('questions', [OrderedDict([('answers', [<Answer: Answer object (1)>])]), OrderedDict([('answers', [<Answer: Answer object (5
)>])]), OrderedDict([('answers', [<Answer: Answer object (9)>, <Answer: Answer object (10)>])]), OrderedDict([('answers', [<Answer: Answer object (16)>])]), OrderedDict(
[('answers', [<Answer: Answer object (18)>]), ('solutions', [<Answer: Answer object (21)>, <Answer: Answer object (24)>])])]), ('user', OrderedDict())])": "Report.survey
" must be a "Survey" instance.
My serializers.py-------------------------------------------------------------------
class ReportAnswerField(serializers.SlugRelatedField):
def to_representation(self, answers):
return AnswerSerializer(answers).data
class ReportQuestionSerializer(serializers.ModelSerializer):
answers = ReportAnswerField(
slug_field='key',
queryset=Answer.objects.all(),
many=True
)
solutions = ReportAnswerField(
slug_field='key',
queryset=Answer.objects.all(),
required=False,
many=True
)
class Meta:
model = Question
fields = [
'answers',
'solutions'
]
class ReportSurveySerializer(serializers.ModelSerializer):
questions = ReportQuestionSerializer(many=True)
user = CurrentUserSerializer()
class Meta:
model = Survey
fields = ['questions', 'user']
class ReportSerializer(serializers.ModelSerializer):
survey = ReportSurveySerializer()
# Error is coming from here
class Meta:
model = Report
fields = ['survey']
My views.py-------------------------------------------------------------------
class ReportsViewSet(viewsets.ModelViewSet):
queryset = Report.objects.all()
serializer_class = ReportSerializer
My models.py-------------------------------------------------------------------
class Survey(ProjectModel):
DEFAULT = 'default'
KEYS = (
(DEFAULT, 'Default survey'),
)
user = models.ForeignKey(
to=User,
on_delete=models.CASCADE,
related_name='surveys',
null=True
)
questions = models.ManyToManyField(
to=Question,
related_name='surveys',
)
key = models.CharField(choices=KEYS, max_length=255)
class Report(ProjectModel):
survey = models.ForeignKey(
to=Survey,
related_name='reports',
on_delete=models.CASCADE
)
user = models.ForeignKey(
to=User,
on_delete=models.CASCADE,
null=False
)