diff --git a/arkindex_worker/models.py b/arkindex_worker/models.py
index bea558bebece894e023f2095989ba8e6d5237683..473073fdcadee8921ca4aceb52d9e12b1c6b510f 100644
--- a/arkindex_worker/models.py
+++ b/arkindex_worker/models.py
@@ -36,6 +36,9 @@ class MagicDict(dict):
                 "{} object has no attribute '{}'".format(self.__class__.__name__, name)
             )
 
+    def __setattr__(self, name, value):
+        return super().__setitem__(name, value)
+
     def __delattr__(self, name):
         try:
             return super().__delattr__(name)
diff --git a/tests/test_element.py b/tests/test_element.py
index bfe2a9db3478d163c3d9e09cb8759a652462906c..c20339af26de66856729bfbad5340d0b1dd7a69f 100644
--- a/tests/test_element.py
+++ b/tests/test_element.py
@@ -320,3 +320,9 @@ def test_open_image_resize_use_full_image_false(mocker):
     assert open_mock.call_args == mocker.call(
         "http://zoneurl/0,0,400,600/133,200/0/default.jpg"
     )
+
+
+def test_setattr_setitem():
+    element = Element({"name": "something"})
+    element.type = "page"
+    assert dict(element) == {"name": "something", "type": "page"}