From 51553269ca20b8aae533410d4f8f8f99a96df9ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frank=20Wickstr=C3=B6m?= Date: Mon, 18 May 2015 10:14:53 +0300 Subject: [PATCH] Add fix for failing queryset filters in nested routes If a route such as /users/NOT_AN_INTEGER/settings would be requested and the /users endpoint expects an integer as the second part of the url then this request would throw a internal server error. This is a temp fix and a proper solution should be found. Discussion about this can be found on Github: https://github.com/chibisov/drf-extensions/issues/86 https://github.com/chibisov/drf-extensions/pull/63 https://github.com/chibisov/drf-extensions/issues/50 --- rest_framework_extensions/mixins.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rest_framework_extensions/mixins.py b/rest_framework_extensions/mixins.py index 8f269e1..4521167 100644 --- a/rest_framework_extensions/mixins.py +++ b/rest_framework_extensions/mixins.py @@ -4,6 +4,7 @@ from rest_framework_extensions.utils import get_rest_framework_features from rest_framework_extensions.bulk_operations.mixins import ListDestroyModelMixin, ListUpdateModelMixin from rest_framework_extensions.settings import extensions_api_settings +from django.http import Http404 class DetailSerializerMixin(object): @@ -63,7 +64,10 @@ def get_queryset(self): def filter_queryset_by_parents_lookups(self, queryset): parents_query_dict = self.get_parents_query_dict() if parents_query_dict: - return queryset.filter(**parents_query_dict) + try: + return queryset.filter(**parents_query_dict) + except ValueError: + raise Http404 else: return queryset