首页 > 解决方案 > Django-rest-frame 工作获取 oneToOne Filed 的详细信息

问题描述

我正在构建用户配置文件功能,以下是模型、模型序列化器和模型视图集的详细信息。

当我向 UserProfile 发送 GET 请求时,我只得到 UserProfile 模型中的字段。但我还想获取 User 模型中存在的名字、姓氏、电子邮件等。

 class UserProfile(models.Model):
    user= models.OneToOneField(User,on_delete=models.CASCADE,related_name='userprofile');
    state= models.CharField(max_length=200)
    city= models.CharField(max_length=200)
    add1= models.CharField(max_length=200)
    add2= models.CharField(max_length=200)
    postalcode= models.IntegerField()
    country= models.CharField(max_length=200)


class UserProfileSerializer(serializers.ModelSerializer):

   class Meta:
      model = UserProfile
      fields = ('state','city','country')



class UserProfileViewSet(viewsets.ModelViewSet):
      queryset = UserProfile.objects.all()
      serializer_class = UserProfileSerializer

     def get_queryset(self):
       if self.action == 'list':
          return self.queryset.filter(user=self.request.user)
       return self.queryset

请让我知道如何从 userProfile 模型中获取 OneToOneField 的详细信息。

标签: djangodjango-modelsdjango-rest-framework

解决方案


创建一个用户序列化程序并将其添加到用户配置文件序列化程序和字段中。

class UserSerializer(serializers.ModelSerializer):

    class Meta:      
      model = User
      fields = '__all__'

class UserProfileSerializer(serializers.ModelSerializer):
    user=UserSerializer(read_only=True)

    class Meta:      
      model = UserProfile
      fields = ('state','city','country','user')

推荐阅读