diff --git a/django/newforms/widgets.py b/django/newforms/widgets.py index 8965a8c108..df5c20d97d 100644 --- a/django/newforms/widgets.py +++ b/django/newforms/widgets.py @@ -571,6 +571,8 @@ class MultiWidget(Widget): def _has_changed(self, initial, data): if initial is None: initial = [u'' for x in range(0, len(data))] + else: + initial = self.decompress(initial) for widget, initial, data in zip(self.widgets, initial, data): if not widget._has_changed(initial, data): return False diff --git a/tests/regressiontests/forms/widgets.py b/tests/regressiontests/forms/widgets.py index 0e69602103..d701879311 100644 --- a/tests/regressiontests/forms/widgets.py +++ b/tests/regressiontests/forms/widgets.py @@ -895,6 +895,12 @@ u'
< >>> w.render('name', ['john', 'lennon']) u'
' +>>> w = MyMultiWidget(widgets=(TextInput(), TextInput())) +>>> w._has_changed(None, ['john', 'lennon']) +True +>>> w._has_changed('john__lennon', ['john', 'lennon']) +False + # SplitDateTimeWidget ######################################################### >>> w = SplitDateTimeWidget()