如何让foreignkey对象在Django rest fram中显示完整对象

2024-09-22 14:35:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用^{{cd1>}构建的Django后端。我目前有一个对象,它是外键。当我请求获取一个对象时,它会显示foreignkey id,并且只显示id。我希望它显示整个对象,而不仅仅是foriegnkey的id。不确定如何做到,因为它没有真正在文档中显示如何做到这一点。

以下是代码:

视图页面:

from users.models import Profile
from ..serializers import ProfileSerializer
from rest_framework import viewsets

class ProfileViewSet(viewsets.ModelViewSet):
    queryset = Profile.objects.all()
    lookup_field = 'user__username'
    serializer_class = ProfileSerializer

有一个用户外键指的是用户。

URL:

^{pr2}$

序列化程序:

^{pr3}$

这就是它的样子:

^{pr4}$

Tags: 对象django用户from文档importidprofile
2条回答

在序列化程序的Meta类中使用^{}

class ProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = Profile
        fields = (
            'id',
            'user',
            'synapse',
            'bio',
            'profile_pic',
            'facebook',
            'twitter'
        )
        depth = 1

您可以创建一个UserSerializer并在ProfileSerializer中使用它(使用as nested serializer):

class UserSerializer(serializers.ModelSerializer):
     class Meta:
         model = User
         fields = (
            'username',
            'first_name',
            # and so on..
         )

class ProfileSerializer(serializers.ModelSerializer):
    user = UserSerializer(read_only=True)
    class Meta:
        model = Profile
        fields = (
            'id',
            'user',
            'synapse',
            'bio',
            'profile_pic',
            'facebook',
            'twitter'
        )

相关问题 更多 >