aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2014-12-15 09:13:02 +0000
committerTom Christie2014-12-15 09:13:02 +0000
commit5e7c9687c7e11b6adfe2fc534eb0504e67ca9fc9 (patch)
tree8a6132031a0535e86efcbef5669ee4bb17825fc2
parenta72f812d80a4000e86a5ad96001f3fbf43fe310a (diff)
downloaddjango-rest-framework-5e7c9687c7e11b6adfe2fc534eb0504e67ca9fc9.tar.bz2
First pass at serializer repr bug
-rw-r--r--rest_framework/utils/representation.py3
-rw-r--r--tests/test_serializer.py17
2 files changed, 19 insertions, 1 deletions
diff --git a/rest_framework/utils/representation.py b/rest_framework/utils/representation.py
index 3f17a8b9..0fdb4775 100644
--- a/rest_framework/utils/representation.py
+++ b/rest_framework/utils/representation.py
@@ -2,6 +2,7 @@
Helper functions for creating user-friendly representations
of serializer classes and serializer fields.
"""
+from __future__ import unicode_literals
from django.db import models
from django.utils.encoding import force_text
from django.utils.functional import Promise
@@ -24,7 +25,7 @@ def smart_repr(value):
if isinstance(value, Promise) and value._delegate_text:
value = force_text(value)
- value = repr(value)
+ value = repr(value).decode('utf-8')
# Representations like u'help text'
# should simply be presented as 'help text'
diff --git a/tests/test_serializer.py b/tests/test_serializer.py
index 56b39095..48fcc83b 100644
--- a/tests/test_serializer.py
+++ b/tests/test_serializer.py
@@ -1,3 +1,4 @@
+# coding: utf-8
from __future__ import unicode_literals
from rest_framework import serializers
import pytest
@@ -197,3 +198,19 @@ class TestIncorrectlyConfigured:
"The serializer field might be named incorrectly and not match any attribute or key on the `ExampleObject` instance.\n"
"Original exception text was:"
)
+
+
+class TestUnicodeRepr:
+ def test_unicode_repr(self):
+ class ExampleSerializer(serializers.Serializer):
+ example = serializers.CharField()
+
+ class ExampleObject:
+ def __init__(self):
+ self.example = '한국'
+ def __repr__(self):
+ return self.example.encode('utf8')
+
+ instance = ExampleObject()
+ serializer = ExampleSerializer(instance)
+ repr(serializer)