Refactored the implementation of DynamicField extension for storing data in order

This commit is contained in:
Hiroyasu OHYAMA 2017-04-06 00:42:11 +00:00
parent ffbb2c9689
commit d8b238d5f1
2 changed files with 3 additions and 2 deletions

View File

@ -202,7 +202,7 @@ class DeReference(object):
as_tuple = isinstance(items, tuple)
iterator = enumerate(items)
data = []
elif type(items) == OrderedDict:
elif isinstance(items, OrderedDict):
is_list = False
iterator = items.iteritems()
data = OrderedDict()

View File

@ -5,6 +5,7 @@ import re
import time
import uuid
import warnings
from collections import Mapping
from operator import itemgetter
from bson import Binary, DBRef, ObjectId, SON
@ -621,7 +622,7 @@ class DynamicField(BaseField):
def __init__(self, container_class=dict, *args, **kwargs):
self._container_cls = container_class
if not issubclass(self._container_cls, dict):
if not issubclass(self._container_cls, Mapping):
self.error('The class that is specified in `container_class` parameter '
'must be a subclass of `dict`.')