aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--rest_framework/fields.py6
-rw-r--r--rest_framework/tests/fields.py23
2 files changed, 25 insertions, 4 deletions
diff --git a/rest_framework/fields.py b/rest_framework/fields.py
index b23813ec..544afc98 100644
--- a/rest_framework/fields.py
+++ b/rest_framework/fields.py
@@ -135,8 +135,7 @@ def humanize_field(field):
"""
humanized = {
- 'type': (field.type_name if field.type_name
- else humanize_field_type(field.form_field_class)),
+ 'type': humanize_field_type(field.__class__),
'required': getattr(field, 'required', False),
'label': field.label,
}
@@ -154,7 +153,8 @@ def humanize_form_fields(form):
:return: A dictionary of {field_label: humanized description}
"""
- fields = SortedDict([(f.name, humanize_field(f)) for f in form.fields])
+ fields = SortedDict([(name, humanize_field(field))
+ for name, field in form.fields.iteritems()])
return fields
diff --git a/rest_framework/tests/fields.py b/rest_framework/tests/fields.py
index de61b011..6a180cb8 100644
--- a/rest_framework/tests/fields.py
+++ b/rest_framework/tests/fields.py
@@ -4,7 +4,8 @@ General serializer field tests.
from __future__ import unicode_literals
from django.utils.datastructures import SortedDict
import datetime
-from rest_framework.fields import humanize_field, humanize_field_type
+from rest_framework.fields import (humanize_field, humanize_field_type,
+ humanize_form_fields)
from django import forms
from decimal import Decimal
from django.db import models
@@ -742,3 +743,23 @@ class HumanizedField(TestCase):
def test_label(self):
for field in (self.required_field, self.optional_field):
self.assertEqual(humanize_field(field)['label'], field.label)
+
+
+class Form(forms.Form):
+ field1 = forms.CharField(max_length=3, label='field one')
+ field2 = forms.CharField(label='field two')
+
+
+class HumanizedSerializer(TestCase):
+ def setUp(self):
+ self.serializer = TimestampedModelSerializer()
+
+ def test_humanized(self):
+ humanized = humanize_form_fields(Form())
+ self.assertEqual(humanized, {
+ 'field1': {
+ u'help_text': u'', u'required': True,
+ u'type': u'Single Character', u'label': 'field one'},
+ 'field2': {
+ u'help_text': u'', u'required': True,
+ u'type': u'Single Character', u'label': 'field two'}})