【发布时间】:2019-05-03 13:59:59
【问题描述】:
我有嵌套模型和多对多关系。当我尝试序列化它们时,结果不可见。
尝试了文档和相关名称等中的所有内容。
我的基本模型是这样的:
class Question(models.Model):
ques_code = models.CharField(max_length=12, null=True, default='Ques Code')
def __str__(self):
return self.ques_code
子模型是:
class MCQuestion(Question):
answer_order = models.CharField(
max_length=30, null=True, blank=True,
choices=ANSWER_ORDER_OPTIONS,
help_text=_("The order in which multichoice "
"answer options are displayed "
"to the user"),
verbose_name=_("Answer Order"))
然后将答案类与键链接为:
class Answer(models.Model):
mcquestion = models.ForeignKey(MCQuestion,related_name='answers', on_delete=models.CASCADE)
content = models.CharField(max_length=1000,
blank=False,
help_text=_("Enter the answer text that "
"you want displayed"),
verbose_name=_("Content"))
correct = models.BooleanField(blank=False,
default=False,
help_text=_("Is this a correct answer?"),
verbose_name=_("Correct"))
def __str__(self):
return self.content
序列化器如下:
class AnswerSerializer(serializers.ModelSerializer):
class Meta:
model = Answer
fields = ('content','correct')
class MCQuestionSerializer(serializers.ModelSerializer):
answers = AnswerSerializer(many=True, read_only=True)
#answers = serializers.SerializerMethodField()
quiz = QuizSerializer(many=True)
class Meta:
model = MCQuestion
fields = ('ques_code','answers')
视图是:
class QuestionViewSet(viewsets.ModelViewSet):
queryset = Question.objects.all()
serializer_class = MCQuestionSerializer
当我访问问题 API 时,嵌套的答案不可见。我检查了所有文档并检查并更改了我的代码。
如果我尝试使用 answers = serializers.SerializerMethodField() 并为其定义 get_answers 函数,则会出现错误提示“问题没有答案属性”
我认为这是由于孩子和母亲的模型系统。它是在 Question 中搜索属性,而不是在 MCQuestion 模型中。我能做什么?
【问题讨论】:
标签: django serialization django-models django-rest-framework