2017-03-11 5 views
0

「オブジェクトには属性がありません」私はいくつかの方法で、Djangoのユーザモデルを拡張し、それをシリアル化し、その結果をはAttributeErrorは、クエリセットのユーザー

私のモデル

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) 

しかし、私はあなたが常にシリアライザにクエリセットを渡しUserSerializer(users,many=True)でそれを渡そうとしているときはいつでも、このエラー

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

シリアライザを試して= UserSerializer(users、many = True) –

答えて

1

最後に私は間違っていたことを発見しました 引数を渡す必要があるオブジェクトのリストを取得したいときに、ビューが問題になりましたmany = Trueをシリアライザに渡します。 問題がこれでした

7

を得ました。単一のユーザーオブジェクトを渡す場合は、User.objects.get(some_attribue=something)を使用してから、many=Trueフラグを使用せずにそのオブジェクトをシリアライザに渡します。

関連する問題