From de4604be0ab64da2d7da0a7054197278e566ced2 Mon Sep 17 00:00:00 2001 From: Jens Alm Date: Mon, 15 Oct 2012 11:47:56 +0200 Subject: [PATCH] Support for request-based queryset limits on ListModelMixin ListModelMixin uses the get_queryset from the MultipleObjectMixin. This method can be overridden on the View class to return a different queryset, but get_queryset doesn't accept a request parameter in. This commit adds the limit_list hook to override if you want to limit the queryset based on request-information such as the logged in user. --- rest_framework/mixins.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/rest_framework/mixins.py b/rest_framework/mixins.py index 29153e182..2834c882e 100644 --- a/rest_framework/mixins.py +++ b/rest_framework/mixins.py @@ -32,8 +32,15 @@ class ListModelMixin(object): """ empty_error = u"Empty list and '%(class_name)s.allow_empty' is False." + def limit_list(self, request, queryset): + """ + Override this method to limit the queryset based on information in the request, such as the logged in user. + Should return the limited queryset, defaults to no limits. + """ + return queryset + def list(self, request, *args, **kwargs): - self.object_list = self.get_queryset() + self.object_list = self.limit_list(request, self.get_queryset()) # Default is to allow empty querysets. This can be altered by setting # `.allow_empty = False`, to raise 404 errors on empty querysets.