Skip to content

Commit bbfc980

Browse files
committed
fix regression for Lists of Nested in flask-restful#165
1 parent e585732 commit bbfc980

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

flask_restful/fields.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,9 @@ def output(self, key, data):
157157

158158
return [
159159
self.container.output(idx,
160-
val if isinstance(val, dict) else value)
160+
val if isinstance(val, dict) and
161+
not isinstance(self.container, Nested)
162+
else value)
161163
for idx, val in enumerate(value)
162164
]
163165

tests/test_fields.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import unittest
33
from mock import Mock
44
from flask.ext.restful.fields import MarshallingException
5+
from flask.ext.restful.utils.ordereddict import OrderedDict
56
from flask_restful import fields
67
from datetime import datetime
78
from flask import Flask
@@ -333,6 +334,12 @@ def test_list_from_dict_with_attribute(self):
333334
field = fields.List(fields.Integer(attribute='a'))
334335
self.assertEquals([1, 2, 3], field.output('list', obj))
335336

337+
def test_list_of_nested(self):
338+
obj = {'list': [{'a': 1, 'b': 1}, {'a': 2, 'b': 1}, {'a': 3, 'b': 1}]}
339+
field = fields.List(fields.Nested({'a': fields.Integer}))
340+
self.assertEquals([OrderedDict([('a', 1)]), OrderedDict([('a', 2)]), OrderedDict([('a', 3)])],
341+
field.output('list', obj))
342+
336343

337344
if __name__ == '__main__':
338345
unittest.main()

0 commit comments

Comments
 (0)