aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarlton Gibson2014-05-09 10:36:06 +0200
committerCarlton Gibson2014-05-09 10:36:06 +0200
commitd69d9750156f5319019a2ea4097cbe5d70539bd7 (patch)
tree521d044341f2d034b7a1ddd87d1189d4c5b56669
parent2768101441f75d53e5e911528a972e71b142583c (diff)
parent708c7b3a816c3c2df7847695044ef852dc89e72c (diff)
downloaddjango-rest-framework-d69d9750156f5319019a2ea4097cbe5d70539bd7.tar.bz2
Merge pull request #1564 from alumni/master
Fixes #1535 (HTML widget missing `id` attribute)
-rw-r--r--rest_framework/fields.py7
-rw-r--r--rest_framework/tests/test_fields.py11
2 files changed, 17 insertions, 1 deletions
diff --git a/rest_framework/fields.py b/rest_framework/fields.py
index b19955cc..d80aab56 100644
--- a/rest_framework/fields.py
+++ b/rest_framework/fields.py
@@ -154,7 +154,12 @@ class Field(object):
def widget_html(self):
if not self.widget:
return ''
- return self.widget.render(self._name, self._value)
+
+ attrs = {}
+ if 'id' not in self.widget.attrs:
+ attrs['id'] = self._name
+
+ return self.widget.render(self._name, self._value, attrs=attrs)
def label_tag(self):
return '<label for="%s">%s:</label>' % (self._name, self.label)
diff --git a/rest_framework/tests/test_fields.py b/rest_framework/tests/test_fields.py
index 894b5b3c..3ae1c438 100644
--- a/rest_framework/tests/test_fields.py
+++ b/rest_framework/tests/test_fields.py
@@ -4,6 +4,7 @@ General serializer field tests.
from __future__ import unicode_literals
import datetime
+import re
from decimal import Decimal
from uuid import uuid4
from django.core import validators
@@ -103,6 +104,16 @@ class BasicFieldTests(TestCase):
keys = list(field.to_native(ret).keys())
self.assertEqual(keys, ['c', 'b', 'a', 'z'])
+ def test_widget_html_attributes(self):
+ """
+ Make sure widget_html() renders the correct attributes
+ """
+ r = re.compile('(\S+)=["\']?((?:.(?!["\']?\s+(?:\S+)=|[>"\']))+.)["\']?')
+ form = TimeFieldModelSerializer().data
+ attributes = r.findall(form.fields['clock'].widget_html())
+ self.assertIn(('name', 'clock'), attributes)
+ self.assertIn(('id', 'clock'), attributes)
+
class DateFieldTest(TestCase):
"""