diff --git a/rest_framework/request.py b/rest_framework/request.py index 39c643219..a3ea5acd4 100644 --- a/rest_framework/request.py +++ b/rest_framework/request.py @@ -75,12 +75,13 @@ class Request(object): _CONTENTTYPE_PARAM = api_settings.FORM_CONTENTTYPE_OVERRIDE def __init__(self, request, parsers=None, authenticators=None, - negotiator=None, parser_context=None): + negotiator=None, parser_context=None, kargs = {}): self._request = request self.parsers = parsers or () self.authenticators = authenticators or () self.negotiator = negotiator or self._default_negotiator() self.parser_context = parser_context + self.kwargs = kargs self._data = Empty self._files = Empty self._method = Empty diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index caa7c980f..83640254a 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -3,6 +3,7 @@ import datetime import types from decimal import Decimal from django.db import models +from django.db.models.query import QuerySet from django.forms import widgets from django.utils.datastructures import SortedDict from rest_framework.compat import get_concrete_model @@ -283,7 +284,7 @@ class BaseSerializer(Field): """ Serialize objects -> primitives. """ - if hasattr(obj, '__iter__'): + if hasattr(obj, '__iter__') and (isinstance(obj, QuerySet) or not hasattr(obj, '__dict__')): return [self.convert_object(item) for item in obj] return self.convert_object(obj) diff --git a/rest_framework/views.py b/rest_framework/views.py index 10bdd5a53..e987bc0f1 100644 --- a/rest_framework/views.py +++ b/rest_framework/views.py @@ -275,7 +275,7 @@ class APIView(View): parsers=self.get_parsers(), authenticators=self.get_authenticators(), negotiator=self.get_content_negotiator(), - parser_context=parser_context) + parser_context=parser_context, kargs=kargs) def initial(self, request, *args, **kwargs): """