Django Rest Framework - 在列表中获取完整的相关对象

Django Rest Framework - Get full related objects in list

我是 Django Rest Framework 的新手,我正在尝试使用 DRF 来序列化(相关)对象的列表。

我有以下型号:

class Answer(models.Model):
   value = models.CharField(max_length=128)

class User(models.Model):
   name = models.CharField(max_length=128)
   age = models.PositiveIntegerField()

class UserAnswer(models.Model):
    user = models.ForeignKey(User)
    answer = models.ForeignKey(Answer)

我想要得到的结果是这种形式:

[
    {
     "name": "myName1",
     "answers": [
        {
          "value": "myFirstAnswer"
        },
        {
          "value": "mySecondAnswer"
        },
        {
          "value": "myThirdAnswer"
        },
        ]
    },
    {
     "name": "myName2",
     "answers": [
        {
          "value": "myFirstAnswer"
        },
        {
          "value": "mySecondAnswer"
        },
        {
          "value": "myThirdAnswer"
        },
        ]
    }
]

我现在正在尝试这样做:

class UserAnswerSerializer(serializers.ModelSerializer):
    answers = AllUserAnswersSerializer(many=True, read_only=True)
    class Meta:
        model = User
        fields = ('name', 'answers')

但我得到以下结果:

[
    {
        "name": "myName1"
    }, 
    {
        "name": "myName2"
    }
]

当我尝试这样做时:

class UserAnswerSerializer(serializers.ModelSerializer):
    answers = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
    class Meta:
        model = User
        fields = ('name', 'answers')

然后我得到以下结果(又是一个例子):

[
    {
     "name": "myName1",
     "answers": [
        1,
        2,
        3
        ]
    },
    {
     "name": "myName2",
     "answers": [
        4,
        5,
        6
        ]
    }
]

我很难完成这项工作,希望有人能告诉我如何将主键转换为实际对象!

谢谢!

删除序列化程序中 answers 字段的显式定义并添加 depth=1。它应该是这样的:

class UserAnswerSerializer(serializers.ModelSerializer):
    class Meta:
        depth = 1
        model = User
        fields = ('name', 'answers')

关于深度的信息:http://www.django-rest-framework.org/api-guide/serializers/#specifying-nested-serialization