2017-09-28 2 views
2

Standardmäßig ruft RetrieveAPIView oder RetrieveUpdateAPIView lookup_field ab, um Model abzurufen.RetrieveAPIView ohne Nachschlagefeld?

In meinem Fall möchte ich jedoch mein Modell von self.request.user abrufen.

ist hier views.py Beispiel

class ProfileRetrieveAndUpdateProfile(generics.RetrieveUpdateAPIView): 
    queryset = Profile.objects.all() 
    serializer_class = ProfileRetrieveAndUpdateSerializer 
    lookup_field = 'user_id' 

    def get_queryset(self): 
     qs = Profile.objects.all() 
     logged_in_user_profile = qs.filter(user=self.request.user) 
     return logged_in_user_profile 

Kann ich RetrieveAPIView verwenden ohne lookup_field?

+0

wo Sie feststellen, dass außer Kraft setzen 'lookup_field' erforderlich ist? Ich habe es nicht in den Dokumenten gefunden, und es funktioniert bei meinem Projekt. –

+0

Dieser Attr hat den Standardwert in der 'GenericAPIView' und wird für get-Objekt verwendet. –

+0

Ich erhalte diesen Fehler, wenn ich 'Lookup_field' nicht spezifiziere: Erwartete Ansicht ProfilePageView, die mit einem URL-Schlüsselwortargument namens" pk "aufgerufen werden soll. Korrigieren Sie das URL-Konfig oder setzen Sie das Attribut ".lookup_field" in der Ansicht korrekt. –

Antwort

3

Sie benötigen get_object

def get_object(self): 
    queryset = self.get_queryset() 
    obj = get_object_or_404(queryset, user=self.request.user) 
    return obj 
+0

WUNDERBAR !!!!!!! –

+0

DANKE SO VIEL X 1.000.000.000 –

+0

froh zu helfen!) –