Django-rest-frame工作获得oneToOne Filed的详细信息

时间:2018-04-24 15:59:41

标签: django django-models django-rest-framework

我正在构建userprofile功能,下面是Models,ModelSerializer和ModelViewSet的详细信息。

当我向UserProfile发送GET请求时,我只获取UserProfile Model中的字段。但我还想获得用户模型中存在的firstname,lastname,email等。

 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的详细信息。

1 个答案:

答案 0 :(得分:0)

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

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')