@@ -107,6 +107,8 @@ def get_db_converters(self, expression):
107107 converters .append (self .convert_datetimefield_value )
108108 elif internal_type == "DecimalField" :
109109 converters .append (self .convert_decimalfield_value )
110+ elif internal_type == "EmbeddedModelField" :
111+ converters .append (self .convert_embeddedmodelfield_value )
110112 elif internal_type == "JSONField" :
111113 converters .append (self .convert_jsonfield_value )
112114 elif internal_type == "TimeField" :
@@ -150,6 +152,16 @@ def convert_durationfield_value(self, value, expression, connection):
150152 value = datetime .timedelta (milliseconds = int (str (value )))
151153 return value
152154
155+ def convert_embeddedmodelfield_value (self , value , expression , connection ):
156+ if value is not None :
157+ # Apply database converters to each field of the embedded model.
158+ for field in expression .output_field .embedded_model ._meta .fields :
159+ field_expr = Expression (output_field = field )
160+ converters = connection .ops .get_db_converters (field_expr )
161+ for converter in converters :
162+ value [field .attname ] = converter (value [field .attname ], field_expr , connection )
163+ return value
164+
153165 def convert_jsonfield_value (self , value , expression , connection ):
154166 """
155167 Convert dict data to a string so that JSONField.from_db_value() can
0 commit comments