我正在用用户模型构建一个Django应用程序。型号:models.py
class User(AbstractUser):
phone = models.CharField(max_length=20, blank=False)
is_verified = models.BooleanField(default=False)
address = models.CharField(max_length=200)
city = models.CharField(max_length=50)
country = models.CharField(max_length=50)
is_verified = models.BooleanField(default=False)
serializers.py:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'first_name', 'last_name')
views.py
class UserProfile(viewsets.ModelViewSet):
permission_classes = (IsAuthenticated,)
serializer_class = UserSerializer
def get_queryset(self):
return User.objects.get(id=self.request.user.id)
当进入url /profile时,我得到一个错误:
“User”对象不可迭代
我验证了数据库中有一个ID = 1的用户,并且self.request.user.id是int(1)
欣赏任何见解
我尝试从对象用户获取用户配置文件数据。我希望得到一个用户序列化的结果,即{id:1,first_name=“X”,last_name=“Y”}我实际上得到了一个带有“User”对象的响应,该对象不可迭代
2条答案
按热度按时间vfh0ocws1#
ModelViewSet
不适合这个任务,因为一个简单的GET将返回一个 list,也许是一个只有一个元素的列表,但实际上是一个列表。如果在URL中添加/
pk``后缀,则只能检索单个元素。您可以使用
RetrieveAPIView
:bf1o4zei2#
您应该更改代码以返回一个可以迭代的查询集来纠正这个错误。要实现这一点,您可以将返回的对象封装在列表中,如下所示:
这将生成一个可以迭代的查询集,它包含一个具有给定id的User对象。