Ver la lista de los objetos de usuario actuales, Django REST

Tengo 2 vistas: / notes / y / notes // En el modelo de note en models.py Tengo una variable de propietario, que almacena el inicio de sesión del propietario. Como quiero tener muchos usuarios, no quiero que vean las notas de otros, así que creé el permiso:

 class IsOwner(permissions.BasePermission): def has_object_permission(self, request, view, obj): return obj.owner == request.user 

Establecí este permiso para NotesList(generics.ListCreateAPIView) y NotesDetail(generics.RetrieveUpdateDestroyAPIView) . Ahora el usuario no puede ver las notas de otros si va a /notes// , pero en /notes/ puede ver la lista completa de todos modos. Entonces, ¿cómo puedo cambiarlo? Quiero ver en la lista de notas sólo mis notas. Creo que la forma correcta es filtrar queryset = Snippet.objects.all().filter(owner=...) pero no puedo pensar de inmediato.

Usted es correcto, necesita anular el conjunto de consultas en la vista de lista. Pero no puede hacerlo en el queryset atributo queryset , porque se ejecuta al inicio del proceso, mientras que necesita acceso a los datos que solo están disponibles en el momento de la solicitud. Por lo tanto, debe definir el método get_queryset en esa vista:

 def get_queryset(self, *args, **kwargs): return Snippet.objects.all().filter(owner=self.request.user)