diff --git a/rest_framework_xml/parsers.py b/rest_framework_xml/parsers.py index 5454356..48b54a5 100644 --- a/rest_framework_xml/parsers.py +++ b/rest_framework_xml/parsers.py @@ -72,6 +72,9 @@ def _type_convert(self, value): except ValueError: pass + if value.startswith('0'): + return value + try: return int(value) except ValueError: diff --git a/tests/test_parsers.py b/tests/test_parsers.py index 38618a8..5100cc7 100644 --- a/tests/test_parsers.py +++ b/tests/test_parsers.py @@ -2,7 +2,7 @@ from __future__ import unicode_literals import datetime - +from decimal import Decimal from django.test import TestCase from django.test.utils import skipUnless from django.utils.six.moves import StringIO @@ -19,13 +19,17 @@ def setUp(self): 'dasd' '' '2011-12-25 12:45:00' + '121.1' + '0001' '' ) self._data = { 'field_a': 121, 'field_b': 'dasd', 'field_c': None, - 'field_d': datetime.datetime(2011, 12, 25, 12, 45, 00) + 'field_d': datetime.datetime(2011, 12, 25, 12, 45, 00), + 'field_e': Decimal('121.1'), + 'field_f': '0001', } self._complex_data_input = StringIO( '' diff --git a/tests/test_renderers.py b/tests/test_renderers.py index 4168868..3111b7d 100644 --- a/tests/test_renderers.py +++ b/tests/test_renderers.py @@ -38,8 +38,9 @@ def test_render_string(self): Test XML rendering. """ renderer = XMLRenderer() - content = renderer.render({'field': 'astring'}, 'application/xml') + content = renderer.render({'field': 'astring', 'field_b': '0001'}, 'application/xml') self.assertXMLContains(content, 'astring') + self.assertXMLContains(content, '0001') def test_render_integer(self): """