1

In meinem urls.py ich habe:Django 'Request' Objekt hat kein Attribut 'user_id'

url(r'^dashboard/users/(?P<user_id>[0-9]+)/products/$', views.UserProductsList.as_view()) 

in views.py

class UserProductsList(generics.ListCreateAPIView): 
    def get_queryset(self): 
     if self.request.user_id: 
      return UserProducts.objects.filter(user_id=self.request.user_id).order_by('id') 
     else: 
      return UserProducts.objects.all().order_by('id') 

Ich möchte in der Lage sein, meine api als solche zuzugreifen:

http://localhost:8000/dashboard/users/10/products

sollten alle Produkte davon auflisten Benutzer und

http://localhost:8000/dashboard/users/10/products/1

sollten zurückkehren product_id 1 von User_id 10

Wie kann ich diesen Fluss implementieren.

Hinweis: Ich verwende Framework Django Rest in diesem Setup

+1

was ist 'self.request.user.id'? – itzMEonTV

+0

in meiner Route habe ich erwähnt '(? P )' warum würde dann etwas in 'self.request.user.id' sein? –

Antwort

4

können Sie tun

class UserProductsList(generics.ListCreateAPIView): 
    def get_queryset(self): 
     if self.kwargs['user_id']: 
      return UserProducts.objects.filter(user_id=self.kwargs['user_id']).order_by('id') 
     else: 
      return UserProducts.objects.all().order_by('id') 

Siehe doc

0

Bitte Code wie folgt aktualisieren ..

class UserProductsList(generics.ListCreateAPIView): 
def get_queryset(self): 
    if self.request.user.id: 
     return 

Oder

class UserProductsList(generics.ListCreateAPIView): 
def get_queryset(self): 
    if self.kwargs['user_id']: 
     return 
Verwandte Themen