Merge pull request #1877 from bagerard/improve_ComplexField_validation_edge_case

Handles edge case when EmbeddedDocumentListField receives a Document and not a list
This commit is contained in:
erdenezul
2018-09-18 14:49:24 +08:00
committed by GitHub
2 changed files with 45 additions and 2 deletions

View File

@@ -314,11 +314,16 @@ class ComplexBaseField(BaseField):
if hasattr(value, 'to_python'):
return value.to_python()
BaseDocument = _import_class('BaseDocument')
if isinstance(value, BaseDocument):
# Something is wrong, return the value as it is
return value
is_list = False
if not hasattr(value, 'items'):
try:
is_list = True
value = {k: v for k, v in enumerate(value)}
value = {idx: v for idx, v in enumerate(value)}
except TypeError: # Not iterable return the value
return value