aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2014-08-18 16:14:45 +0100
committerTom Christie2014-08-18 16:14:45 +0100
commite85ef3b479a872ad6fa0db93e46caec1014bbaf3 (patch)
treef9f9ef657d752af329d4eb982c8869e48b38e1ac
parentd34dfc3fac779a38f67788e8dfd0a2e7ef09d080 (diff)
parent9f3c7e8930dd86e13efff8b2de1710f47fb74d96 (diff)
downloaddjango-rest-framework-e85ef3b479a872ad6fa0db93e46caec1014bbaf3.tar.bz2
Merge pull request #1772 from tomchristie/fix-1583
Copy filter_backends class attribute before returning it.
-rw-r--r--rest_framework/generics.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/rest_framework/generics.py b/rest_framework/generics.py
index 42204841..aea636f1 100644
--- a/rest_framework/generics.py
+++ b/rest_framework/generics.py
@@ -189,7 +189,13 @@ class GenericAPIView(views.APIView):
"""
Returns the list of filter backends that this view requires.
"""
- filter_backends = self.filter_backends or []
+ if self.filter_backends is None:
+ filter_backends = []
+ else:
+ # Note that we are returning a *copy* of the class attribute,
+ # so that it is safe for the view to mutate it if needed.
+ filter_backends = list(self.filter_backends)
+
if not filter_backends and self.filter_backend:
warnings.warn(
'The `filter_backend` attribute and `FILTER_BACKEND` setting '
@@ -199,6 +205,7 @@ class GenericAPIView(views.APIView):
PendingDeprecationWarning, stacklevel=2
)
filter_backends = [self.filter_backend]
+
return filter_backends