mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-26 03:23:59 +03:00
Merge pull request #1564 from alumni/master
Fixes #1535 (HTML widget missing `id` attribute)
This commit is contained in:
commit
d69d975015
|
@ -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)
|
||||
|
|
|
@ -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):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue
Block a user