Skip to content

Commit cdacc51

Browse files
committed
INTPYTHON-602 Fix QuerySet results of embedded model fields that have field converters
Follow up to 4633a9e.
1 parent 34abcc4 commit cdacc51

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

django_mongodb_backend/operations.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,9 @@ def convert_embeddedmodelfield_value(self, value, expression, connection):
157157
# Apply database converters to each field of the embedded model.
158158
for field in expression.output_field.embedded_model._meta.fields:
159159
field_expr = Expression(output_field=field)
160-
converters = connection.ops.get_db_converters(field_expr)
160+
converters = connection.ops.get_db_converters(
161+
field_expr
162+
) + field_expr.get_db_converters(connection)
161163
for converter in converters:
162164
value[field.attname] = converter(value[field.attname], field_expr, connection)
163165
return value

tests/model_fields_/test_embedded_model.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,11 @@ def test_save_load_null(self):
7171
obj = Holder.objects.get()
7272
self.assertIsNone(obj.data)
7373

74+
def test_save_load_json(self):
75+
obj = Holder.objects.create(data=Data(json_value={"a": 1}))
76+
obj.refresh_from_db()
77+
self.assertEqual(obj.data.json_value, {"a": 1})
78+
7479
def test_pre_save(self):
7580
"""Field.pre_save() is called on embedded model fields."""
7681
obj = Holder.objects.create(data=Data())

0 commit comments

Comments
 (0)