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.
This commit is contained in:
Jens Alm 2012-10-15 11:47:56 +02:00
parent 36cc56bc9d
commit de4604be0a

View File

@ -32,8 +32,15 @@ class ListModelMixin(object):
""" """
empty_error = u"Empty list and '%(class_name)s.allow_empty' is False." 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): 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 # Default is to allow empty querysets. This can be altered by setting
# `.allow_empty = False`, to raise 404 errors on empty querysets. # `.allow_empty = False`, to raise 404 errors on empty querysets.