QuerySet 对象在 Django Rest Framework 上没有属性 'user'
QuerySet object has no attribute 'user' on Django Rest Framework
在 Django Rest Framework 上执行请求时,我无法序列化模型以获得结果。
models.py
class Karfarma(models.Model):
user = models.OneToOneField(User, related_name='karfarma', on_delete=models.CASCADE)
mobile = models.TextField(max_length=11)
validation_number = models.TextField(max_length=5, blank=True, default=None)
phone_number = models.TextField(max_length=10, blank=True, default=None)
datetime_join_persian = models.DateTimeField(default=None, null=True)
def __unicode__(self):
return "%s %s" % (self.user.first_name, self.user.last_name)
serializers.py
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = '__all__'
views.py
class UserList(APIView):
queryset = User.objects.all()
def get(self, request):
users = User.objects.all()
serializer = UserSerializer(users)
return Response(serializer.data)
这是我在执行请求时得到的错误的简化版本:
AttributeError: Got AttributeError when attempting to get a value for field user
on serializer UserSerializer
.
The serializer field might be named incorrectly and not match any attribute or key on the QuerySet
instance.
Original exception text was: 'QuerySet' object has no attribute 'user'.
每当您尝试将查询集传递给序列化程序时,始终使用 UserSerializer(users,many=True)
传递它。如果您只想传递一个用户对象,您可以使用 User.objects.get(some_attribue=something)
然后将该对象传递给没有 many=True
标志的序列化程序。
终于找到问题所在了
当您想获取对象列表时,视图是问题所在,您应该将参数 many=True
传递给序列化程序。
问题是这个
在 Django Rest Framework 上执行请求时,我无法序列化模型以获得结果。
models.py
class Karfarma(models.Model):
user = models.OneToOneField(User, related_name='karfarma', on_delete=models.CASCADE)
mobile = models.TextField(max_length=11)
validation_number = models.TextField(max_length=5, blank=True, default=None)
phone_number = models.TextField(max_length=10, blank=True, default=None)
datetime_join_persian = models.DateTimeField(default=None, null=True)
def __unicode__(self):
return "%s %s" % (self.user.first_name, self.user.last_name)
serializers.py
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = '__all__'
views.py
class UserList(APIView):
queryset = User.objects.all()
def get(self, request):
users = User.objects.all()
serializer = UserSerializer(users)
return Response(serializer.data)
这是我在执行请求时得到的错误的简化版本:
AttributeError: Got AttributeError when attempting to get a value for field
user
on serializerUserSerializer
. The serializer field might be named incorrectly and not match any attribute or key on theQuerySet
instance. Original exception text was: 'QuerySet' object has no attribute 'user'.
每当您尝试将查询集传递给序列化程序时,始终使用 UserSerializer(users,many=True)
传递它。如果您只想传递一个用户对象,您可以使用 User.objects.get(some_attribue=something)
然后将该对象传递给没有 many=True
标志的序列化程序。
终于找到问题所在了
当您想获取对象列表时,视图是问题所在,您应该将参数 many=True
传递给序列化程序。
问题是这个