Django rest框架获取登录用户的用户配置文件数据
我已经创建了UserProfile、serilzers和ModelViewSet模型,如下所示。从下面的模型中,我想获取登录用户配置文件的详细信息,如州、城市和地址等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
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”。