2017-03-11 1 views
0

i django Benutzermodell in irgendeiner Weise verlängern, aber es nicht serialisiert werden kann und erhalten ErgebnisseAttribute auf django Rest Rahmen QuerySet ‚Objekt hat kein Attribut‘ Benutzer

mein Modell

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) 

mein Serializer

class UserSerializer(serializers.ModelSerializer): 

class Meta: 
    model = User 
    fields = '__all__' 

meiner Ansicht

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

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

, aber ich habe diesen Fehler

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

können Sie 'urls.py' zu Ihrer Frage hinzufügen, und wahrscheinlich' views.py' auch. Ich verstehe nicht die Verbindung zwischen Ihrem Serializer und Ihrem Modell ... –

+0

@LaurentS Ich bearbeite meine Frage –

+0

versuchen Serializer = UserSerializer (Benutzer, viele = True) –

Antwort

1

schließlich habe ich gefunden, was war falsch Ansicht war das Problem, wenn Sie jemals eine Liste von Objekten erhalten möchten, sollten Sie Argument übergeben viele = True auf den Serialisierer. das Problem war das

7

Jedes Mal, wenn Sie es immer passieren mit UserSerializer(users,many=True) eine queryset an einen Serializer zu passieren versuchen. Wenn Sie nur ein einzelnes Benutzerobjekt übergeben möchten, können Sie User.objects.get(some_attribue=something) verwenden und dieses Objekt dann an den Serializer ohne das Flag many=True übergeben.

Verwandte Themen