2017-03-11 46 views
0

我以某種方式延長Django的用戶模型,但不能序列,並得到結果AttributeError的Django的REST框架查詢集上的「對象有沒有屬性」用戶

我的模型

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) 

我的串行

class UserSerializer(serializers.ModelSerializer): 

class Meta: 
    model = User 
    fields = '__all__' 

我看來

class UserList(APIView): 
queryset = User.objects.all() 

def get(self, request): 
    users = User.objects.all() 
    serializer = UserSerializer(users) 
    return Response(serializer.data) 

但我得到這個錯誤

AttributeError at /api/members/ 
'QuerySet' object has no attribute 'users' 
Request Method: GET 
Request URL: http://127.0.0.1:8000/api/members/ 
Django Version: 1.8 
Exception Type: AttributeError 
+0

你可以在你的問題中加上'urls.py',也可能是'views.py'。我不明白你的序列化程序和你的模型之間的鏈接... –

+0

@LaurentS我編輯我的問題 –

+0

嘗試serializer = UserSerializer(users,many = True) –

回答

1

最後我發現錯在什麼地方 如果您想要獲取對象列表,您應該將參數many = True傳遞給序列化程序,那麼視圖就是問題。 問題是這樣的

7

每當你嘗試將查詢集傳遞給串行總是UserSerializer(users,many=True)通過。如果您只想傳遞一個用戶對象,則可以使用User.objects.get(some_attribue=something),然後將該對象傳遞給序列化程序,而不使用many=True標誌。

相關問題