Fixed #33656 -- Fixed MultiWidget crash when compressed value is a tuple.
This commit is contained in:
parent
4282fd468f
commit
37602e4948
|
@ -884,9 +884,9 @@ class MultiWidget(Widget):
|
||||||
if self.is_localized:
|
if self.is_localized:
|
||||||
for widget in self.widgets:
|
for widget in self.widgets:
|
||||||
widget.is_localized = self.is_localized
|
widget.is_localized = self.is_localized
|
||||||
# value is a list of values, each corresponding to a widget
|
# value is a list/tuple of values, each corresponding to a widget
|
||||||
# in self.widgets.
|
# in self.widgets.
|
||||||
if not isinstance(value, list):
|
if not isinstance(value, (list, tuple)):
|
||||||
value = self.decompress(value)
|
value = self.decompress(value)
|
||||||
|
|
||||||
final_attrs = context["widget"]["attrs"]
|
final_attrs = context["widget"]["attrs"]
|
||||||
|
|
|
@ -130,6 +130,15 @@ class MultiWidgetTest(WidgetTest):
|
||||||
'<input type="text" class="small" value="lennon" name="name_1">'
|
'<input type="text" class="small" value="lennon" name="name_1">'
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
self.check_html(
|
||||||
|
widget,
|
||||||
|
"name",
|
||||||
|
("john", "lennon"),
|
||||||
|
html=(
|
||||||
|
'<input type="text" class="big" value="john" name="name_0">'
|
||||||
|
'<input type="text" class="small" value="lennon" name="name_1">'
|
||||||
|
),
|
||||||
|
)
|
||||||
self.check_html(
|
self.check_html(
|
||||||
widget,
|
widget,
|
||||||
"name",
|
"name",
|
||||||
|
|
|
@ -1094,3 +1094,15 @@ class TestWidget(PostgreSQLSimpleTestCase):
|
||||||
'<input type="text" name="datetimerange_0" value="2006-01-10 07:30:00">'
|
'<input type="text" name="datetimerange_0" value="2006-01-10 07:30:00">'
|
||||||
'<input type="text" name="datetimerange_1" value="2006-02-12 09:50:00">',
|
'<input type="text" name="datetimerange_1" value="2006-02-12 09:50:00">',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_range_widget_render_tuple_value(self):
|
||||||
|
field = pg_forms.ranges.DateTimeRangeField()
|
||||||
|
dt_range_tuple = (
|
||||||
|
datetime.datetime(2022, 4, 22, 10, 24),
|
||||||
|
datetime.datetime(2022, 5, 12, 9, 25),
|
||||||
|
)
|
||||||
|
self.assertHTMLEqual(
|
||||||
|
field.widget.render("datetimerange", dt_range_tuple),
|
||||||
|
'<input type="text" name="datetimerange_0" value="2022-04-22 10:24:00">'
|
||||||
|
'<input type="text" name="datetimerange_1" value="2022-05-12 09:25:00">',
|
||||||
|
)
|
||||||
|
|
Loading…
Reference in New Issue