mirror of
https://github.com/django/django.git
synced 2024-12-22 17:16:24 +00:00
Fixed #27920 -- Restored empty RadioSelect choice producing value=""
Regression in b52c73008a
.
Thanks Tim Graham for the review.
This commit is contained in:
parent
a7ec7afce1
commit
540ae68a5c
@ -347,13 +347,9 @@ class AdminURLFieldWidget(forms.URLInput):
|
||||
context = super().get_context(name, value, attrs)
|
||||
context['current_label'] = _('Currently:')
|
||||
context['change_label'] = _('Change:')
|
||||
context['widget']['href'] = smart_urlquote(context['widget']['value'])
|
||||
context['widget']['href'] = smart_urlquote(context['widget']['value']) if value else ''
|
||||
return context
|
||||
|
||||
def format_value(self, value):
|
||||
value = super().format_value(value)
|
||||
return force_text(value)
|
||||
|
||||
|
||||
class AdminIntegerFieldWidget(forms.NumberInput):
|
||||
class_name = 'vIntegerField'
|
||||
|
@ -1 +1 @@
|
||||
<input type="{{ widget.type }}" name="{{ widget.name }}"{% if widget.value != None and widget.value != "" %} value="{{ widget.value }}"{% endif %}{% include "django/forms/widgets/attrs.html" %} />
|
||||
<input type="{{ widget.type }}" name="{{ widget.name }}"{% if widget.value != None %} value="{{ widget.value }}"{% endif %}{% include "django/forms/widgets/attrs.html" %} />
|
||||
|
@ -1 +1 @@
|
||||
<input type="{{ widget.type }}" name="{{ widget.name }}"{% if widget.value != None and widget.value != "" %} value="{{ widget.value }}"{% endif %}{% include "django/forms/widgets/attrs.html" %} />
|
||||
<input type="{{ widget.type }}" name="{{ widget.name }}"{% if widget.value != None %} value="{{ widget.value }}"{% endif %}{% include "django/forms/widgets/attrs.html" %} />
|
||||
|
@ -180,8 +180,8 @@ class Widget(metaclass=MediaDefiningClass):
|
||||
"""
|
||||
Return a value as it should appear when rendered in a template.
|
||||
"""
|
||||
if value is None:
|
||||
value = ''
|
||||
if value == '' or value is None:
|
||||
return None
|
||||
if self.is_localized:
|
||||
return formats.localize_input(value)
|
||||
return force_text(value)
|
||||
|
@ -7,8 +7,10 @@ class RadioSelectTest(WidgetTest):
|
||||
widget = RadioSelect
|
||||
|
||||
def test_render(self):
|
||||
self.check_html(self.widget(choices=self.beatles), 'beatle', 'J', html=(
|
||||
choices = (('', '------'),) + self.beatles
|
||||
self.check_html(self.widget(choices=choices), 'beatle', 'J', html=(
|
||||
"""<ul>
|
||||
<li><label><input type="radio" name="beatle" value="" /> ------</label></li>
|
||||
<li><label><input checked type="radio" name="beatle" value="J" /> John</label></li>
|
||||
<li><label><input type="radio" name="beatle" value="P" /> Paul</label></li>
|
||||
<li><label><input type="radio" name="beatle" value="G" /> George</label></li>
|
||||
|
@ -6,6 +6,13 @@ from .base import WidgetTest
|
||||
|
||||
class WidgetTests(WidgetTest):
|
||||
|
||||
def test_format_value(self):
|
||||
widget = Widget()
|
||||
self.assertIsNone(widget.format_value(None))
|
||||
self.assertIsNone(widget.format_value(''))
|
||||
self.assertEqual(widget.format_value('español'), 'español')
|
||||
self.assertEqual(widget.format_value(42.5), '42.5')
|
||||
|
||||
def test_value_omitted_from_data(self):
|
||||
widget = Widget()
|
||||
self.assertIs(widget.value_omitted_from_data({}, {}, 'field'), True)
|
||||
|
Loading…
Reference in New Issue
Block a user