【发布时间】:2019-05-06 06:24:04
【问题描述】:
我看过一些相关的帖子,但我不确定我需要做什么。
我已经设置了一个视图来序列化具有嵌套模型的测试模型。我已经设置了序列化程序,但我收到错误“在序列化程序 TestSerializer 上尝试获取字段 Question 的值时出现属性错误。\n序列化程序字段可能命名不正确”。
我的序列化器:
class AnswerSerializer(serializers.ModelSerializer):
class Meta:
model = Answer
fields = ('id', 'number', 'text', 'iscorrect')
class QuestionSerializer(serializers.ModelSerializer):
answer = AnswerSerializer()
class Meta:
model = Question
fields = ('id', 'number', 'text', 'answer')
related_object = 'answer'
class TestSerializer(serializers.ModelSerializer):
question = QuestionSerializer()
class Meta:
model = Test
fields = ('id', 'name', 'question')
related_object = 'question'
我的模特:
class Test(models.Model):
user = models.ForeignKey(User, on_delete=models.PROTECT)
name = models.CharField(max_length=255,default='',blank=False)
datecreated = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
class Question(models.Model):
test = models.ForeignKey(Test, on_delete=models.CASCADE)
text = models.CharField(max_length=255,default='',blank=False)
number = models.IntegerField()
def __str__(self):
return self.text
class Answer(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
text = models.CharField(max_length=255,default='',blank=False)
number = models.IntegerField()
iscorrect = models.BooleanField(default=False)
def __str__(self):
return self.text
视图调用:
serializer = TestSerializer(test, many=True)
【问题讨论】:
-
尝试为 question = QuestionSerializer() 使用不同的变量名称“question”
-
新的变量名会不会也反映在fields和related_object中?
标签: django django-models django-rest-framework django-serializer