diff --git a/django_mongodb_backend/operations.py b/django_mongodb_backend/operations.py index d9eabb9af..578429a2c 100644 --- a/django_mongodb_backend/operations.py +++ b/django_mongodb_backend/operations.py @@ -157,7 +157,9 @@ def convert_embeddedmodelfield_value(self, value, expression, connection): # Apply database converters to each field of the embedded model. for field in expression.output_field.embedded_model._meta.fields: field_expr = Expression(output_field=field) - converters = connection.ops.get_db_converters(field_expr) + converters = connection.ops.get_db_converters( + field_expr + ) + field_expr.get_db_converters(connection) for converter in converters: value[field.attname] = converter(value[field.attname], field_expr, connection) return value diff --git a/tests/model_fields_/test_embedded_model.py b/tests/model_fields_/test_embedded_model.py index 004eae00d..ec9f9dfc4 100644 --- a/tests/model_fields_/test_embedded_model.py +++ b/tests/model_fields_/test_embedded_model.py @@ -71,6 +71,11 @@ def test_save_load_null(self): obj = Holder.objects.get() self.assertIsNone(obj.data) + def test_save_load_json(self): + obj = Holder.objects.create(data=Data(json_value={"a": 1})) + obj.refresh_from_db() + self.assertEqual(obj.data.json_value, {"a": 1}) + def test_pre_save(self): """Field.pre_save() is called on embedded model fields.""" obj = Holder.objects.create(data=Data())