获取嵌套模型字段。串行器错误。 QuerySet 类型的对象不可 JSON 序列化

问题描述 投票:0回答:1

我在 Django 中获取嵌套对象时遇到问题。我的主要目的是从嵌套的 Django 对象生成 JSON 对象。

我有以下型号:

class SurveyAnswer(models.Model):
   id = models.UUIDField(default=uuid.uuid4, unique=True,
        primary_key=True, editable=False)
   survey=models.ForeignKey("Survey",on_delete=models.CASCADE)
   answer=models.ForeignKey("Answer",on_delete=models.CASCADE)
   total_count=models.IntegerField(null=True,blank=True)
   total_percentage=models.FloatField(null=True,blank=True)

   class Meta:
       db_table="SurveyAnswer"


class Answer(models.Model):
   id = models.UUIDField(default=uuid.uuid4, unique=True,
      primary_key=True, editable=False)
   name= models.CharField(max_length=100)

   def __str__(self) -> str:
    return self.name
   class Meta:
    db_table="Answer"

我想获取具有相关答案模型的所有 UserAnswer 记录(仅答案模型中的名称字段)。为了能够做到这一点,我创建了如下序列化器,但这次我遇到了错误 就像“QuerySet 类型的对象不可 JSON 序列化”。

我该怎么办?有什么简单的方法可以做到吗?

class SurveyAnswerSerializer(serializers.ModelSerializer):
   answers=serializers.StringRelatedField()

class Meta:
    model=SurveyAnswer
    fields=["id","total_count","total_percentage","answers",]
python django django-rest-framework
1个回答
0
投票

我认为在这种情况下,您需要为答案模型定义一个序列化器。 然后写例如:

answers = AnswerSerializer(many=True, read_only=True)

并写下:

answer=models.ForeignKey("Answer",on_delete=models.CASCADE, related_name='answers')
© www.soinside.com 2019 - 2024. All rights reserved.