From 42914cf55ed80c8efdad846d06ac38ed4d74c2fd Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Wed, 10 Aug 2016 16:24:47 +0100 Subject: [PATCH] Update RelatedField.choices to support non-string values --- rest_framework/relations.py | 4 ++-- tests/test_model_serializer.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rest_framework/relations.py b/rest_framework/relations.py index 264f6427a..4b6b3bea4 100644 --- a/rest_framework/relations.py +++ b/rest_framework/relations.py @@ -10,7 +10,7 @@ from django.core.urlresolvers import ( from django.db.models import Manager from django.db.models.query import QuerySet from django.utils import six -from django.utils.encoding import force_text, smart_text +from django.utils.encoding import smart_text from django.utils.six.moves.urllib import parse as urlparse from django.utils.translation import ugettext_lazy as _ @@ -168,7 +168,7 @@ class RelatedField(Field): return OrderedDict([ ( - force_text(self.to_representation(item), strings_only=True), + self.to_representation(item), self.display_value(item) ) for item in queryset diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index a14972f04..01243ff6e 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -614,7 +614,7 @@ class TestRelationalFieldDisplayValue(TestCase): fields = '__all__' serializer = TestSerializer() - expected = OrderedDict([('1', 'Red Color'), ('2', 'Yellow Color'), ('3', 'Green Color')]) + expected = OrderedDict([(1, 'Red Color'), (2, 'Yellow Color'), (3, 'Green Color')]) self.assertEqual(serializer.fields['color'].choices, expected) def test_custom_display_value(self): @@ -630,7 +630,7 @@ class TestRelationalFieldDisplayValue(TestCase): fields = '__all__' serializer = TestSerializer() - expected = OrderedDict([('1', 'My Red Color'), ('2', 'My Yellow Color'), ('3', 'My Green Color')]) + expected = OrderedDict([(1, 'My Red Color'), (2, 'My Yellow Color'), (3, 'My Green Color')]) self.assertEqual(serializer.fields['color'].choices, expected)