diff --git a/tests/core_tests/tests/test_fields.py b/tests/core_tests/tests/test_fields.py index f4c4fcfc8..672f3239a 100644 --- a/tests/core_tests/tests/test_fields.py +++ b/tests/core_tests/tests/test_fields.py @@ -66,6 +66,19 @@ def test_add_root(self): self.assertEqual(root_node.content.pk, 1337) + def test_override_add_root(self): + """ + If we put a widgy content before save()ing, the root_node shouldn't be overridden. + """ + instance = HasAWidgy() + + field = HasAWidgy._meta.get_field('widgy') + instance.widgy = ContentType.objects.get_for_model(Layout) + instance.widgy = field.add_root(instance, {'pk': 1337}) + instance.save() + + self.assertEqual(instance.widgy.content.pk, 1337) + @unittest.skip("We want WidgyFields to work with non-modelforms, but we haven't designed an API yet.") class TestPlainForm(TestCase): diff --git a/widgy/db/fields.py b/widgy/db/fields.py index 761fe7997..ba0ff3536 100644 --- a/widgy/db/fields.py +++ b/widgy/db/fields.py @@ -37,6 +37,8 @@ def __set__(self, instance, value): setattr(instance, self.field.pre_save_ct_field_name, value) else: super(WidgyFieldObjectDescriptor, self).__set__(instance, value) + if hasattr(instance, self.field.pre_save_ct_field_name): + delattr(instance, self.field.pre_save_ct_field_name) class WidgyField(models.ForeignKey):