Commit a7b7f27c authored by Tim Graham's avatar Tim Graham
Browse files

Fixed #25233 -- Fixed HStoreField.has_changed() handling of initial values.

Thanks Simon Charette for review.
parent 6ed613b2
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ class HStoreField(forms.CharField):
    def to_python(self, value):
        if not value:
            return {}
        if not isinstance(value, dict):
            try:
                value = json.loads(value)
            except ValueError:
+2 −2
Original line number Diff line number Diff line
@@ -22,5 +22,5 @@ Bugfixes
* Prevented an exception in ``TestCase.setUpTestData()`` from leaking the
  transaction (:ticket:`25176`).

* Fixed ``has_changed()`` method in
  :class:`django.contrib.postgres.forms.HStoreField`.
* Fixed ``has_changed()`` method in ``contrib.postgres.forms.HStoreField``
  (:ticket:`25215`, :ticket:`25233`).
+6 −0
Original line number Diff line number Diff line
@@ -206,6 +206,12 @@ class TestFormField(PostgreSQLTestCase):
        form_w_hstore = HStoreFormTest({'f1': '{"a": 2}'}, initial={'f1': '{"a": 1}'})
        self.assertTrue(form_w_hstore.has_changed())

        form_w_hstore = HStoreFormTest({'f1': '{"a": 1}'}, initial={'f1': {"a": 1}})
        self.assertFalse(form_w_hstore.has_changed())

        form_w_hstore = HStoreFormTest({'f1': '{"a": 2}'}, initial={'f1': {"a": 1}})
        self.assertTrue(form_w_hstore.has_changed())


class TestValidator(PostgreSQLTestCase):