diff options
| author | Carlton Gibson | 2014-05-09 10:36:06 +0200 | 
|---|---|---|
| committer | Carlton Gibson | 2014-05-09 10:36:06 +0200 | 
| commit | d69d9750156f5319019a2ea4097cbe5d70539bd7 (patch) | |
| tree | 521d044341f2d034b7a1ddd87d1189d4c5b56669 | |
| parent | 2768101441f75d53e5e911528a972e71b142583c (diff) | |
| parent | 708c7b3a816c3c2df7847695044ef852dc89e72c (diff) | |
| download | django-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.py | 7 | ||||
| -rw-r--r-- | rest_framework/tests/test_fields.py | 11 | 
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):      """ | 
