Django rest框架获取登录用户的用户配置文件数据

Django rest框架获取登录用户的用户配置文件数据,django,django-models,django-rest-framework,Django,Django Models,Django Rest Framework,我已经创建了UserProfile、serilzers和ModelViewSet模型,如下所示。从下面的模型中,我想获取登录用户配置文件的详细信息,如州、城市和地址等 class UserProfile(models.Model): user= models.OneToOneField(User,on_delete=models.CASCADE,related_name='userprofile'); state= models.CharField(max_length=200

我已经创建了UserProfile、serilzers和ModelViewSet模型,如下所示。从下面的模型中,我想获取登录用户配置文件的详细信息,如州、城市和地址等

 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(self, request):
        userProfileObj = queryset.objects.filter(user_id=request.user.id)
        serializer = self.get_serializer(userProfileObj)
        return Response(serializer.data)

但由于某些原因,我获取的是所有用户配置文件数据,而不是登录的用户数据,请让我知道我哪里做错了。

ModelViewSet
实现了方法
列表
/
检索
而不是
获取


只需覆盖
get\u queryset
。不需要自己创建序列化程序。(也不需要设置
queryset
属性。)

ModelViewSet
实现方法
列表
/
检索
获取


只需覆盖
get\u queryset
。不需要自己创建序列化程序。(也不需要设置
queryset
属性。)

您可以通过覆盖
get\u queryset()
方法来实现,如下所示

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


这里的
'list'
引用了api类型,即
列表api
。这意味着,当您访问列表api时,它将返回登录用户的配置文件

您可以通过覆盖
get\u queryset()
方法来执行此操作,如下所示

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


这里的
'list'
引用了api类型,即
列表api
。这意味着,当您访问列表api时,它将返回登录用户的配置文件

,但我收到此错误原始异常文本为:“QuerySet”对象没有属性“state”。但我收到此错误原始异常文本为:“QuerySet”对象没有属性“state”。