diff --git a/rest_framework/compat.py b/rest_framework/compat.py index d155f5542..da276b40f 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -599,3 +599,8 @@ except ImportError: klass.__unicode__ = klass.__str__ klass.__str__ = lambda self: self.__unicode__().encode('utf-8') return klass + +if django.VERSION >= (1, 7): + from collections import OrderedDict +else: + from django.utils.datastructures import SortedDict as OrderedDict diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 16035062d..477a69826 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -10,7 +10,6 @@ import datetime import inspect import re import warnings -from collections import OrderedDict from decimal import Decimal, DecimalException from django import forms from django.core import validators @@ -24,7 +23,7 @@ from django.utils.translation import ugettext_lazy as _ from rest_framework import ISO_8601 from rest_framework.compat import ( timezone, parse_date, parse_datetime, parse_time, BytesIO, six, smart_text, - force_text, is_non_str_iterable + force_text, is_non_str_iterable, OrderedDict ) from rest_framework.settings import api_settings diff --git a/rest_framework/utils/encoders.py b/rest_framework/utils/encoders.py index e0ff53780..26d0fa3bd 100644 --- a/rest_framework/utils/encoders.py +++ b/rest_framework/utils/encoders.py @@ -2,10 +2,9 @@ Helper classes for parsers. """ from __future__ import unicode_literals -from collections import OrderedDict from django.db.models.query import QuerySet from django.utils.functional import Promise -from rest_framework.compat import timezone, force_text +from rest_framework.compat import timezone, force_text, OrderedDict from rest_framework.serializers import DictWithMetadata, OrderedDictWithMetadata import datetime import decimal diff --git a/rest_framework/views.py b/rest_framework/views.py index 9d96b8014..17d7701f1 100644 --- a/rest_framework/views.py +++ b/rest_framework/views.py @@ -3,12 +3,11 @@ Provides an APIView class that is the base of all views in REST framework. """ from __future__ import unicode_literals -from collections import OrderedDict from django.core.exceptions import PermissionDenied from django.http import Http404 from django.views.decorators.csrf import csrf_exempt from rest_framework import status, exceptions -from rest_framework.compat import smart_text, HttpResponseBase, View +from rest_framework.compat import smart_text, HttpResponseBase, OrderedDict, View from rest_framework.request import Request from rest_framework.response import Response from rest_framework.settings import api_settings