Django 序列化 json

Django serializing json

我正在使用 django 构建 API,但遇到了一个问题。
我有一个 UserDetail 模型,它有一个指向 User 模型的 foreing 键。

class UserDetail(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    about = models.CharField(max_length=200, default="", blank=True)

我想将User的信息和UserDetails的信息序列化为一个json,我目前正在做的是:

class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = ('username', 'first_name', 'last_name', 'email')


class DetailSerializer(serializers.ModelSerializer):

    user = UserSerializer(required=True)

    class Meta:
        model = UserDetail
        fields = ('user', 'about',)

现在我得到这个:

{
    "user": {
        "username": "julia",
        "first_name": "antonia",
        "last_name": "uri",
        "email": "as¡¡test@test.test"
    },
    "about": ""
}

但我想从用户那里获取 UserDetail 的信息,而不是相反(就像我现在正在做的那样),所以我得到的信息是这样的:

{
    "username": "julia",
        "first_name": "antonia",
        "last_name": "uri",
        "email": "test@test.test",
    "details": {
        "about": ""
    }
}

如果有人能告诉我我做错了什么,我将不胜感激。

谢谢!

编辑
这是我的观点:

#user = User.objects.select_related('userdetail').get(username=username)
        user = User.objects.get(username=username)
        userDetail = UserDetail.objects.get(user=user)

        if request.method == 'GET':
            serializer = DetailSerializer(userDetail)
            return Response(serializer.data)

你可以这样做:

class DetailSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserDetail
        fields = ('about',)

class UserSerializer(serializers.ModelSerializer):
    details = DetailSerializer(many=False, source="userdetail")

    class Meta:
        model = User
        fields = ('username', 'first_name', 'last_name', 'email', 'details')

source=userdetail 是您从用户模型实例

访问 userdetail 的方式