@@ -107,6 +107,8 @@ def get_db_converters(self, expression):
107
107
converters .append (self .convert_datetimefield_value )
108
108
elif internal_type == "DecimalField" :
109
109
converters .append (self .convert_decimalfield_value )
110
+ elif internal_type == "EmbeddedModelField" :
111
+ converters .append (self .convert_embeddedmodelfield_value )
110
112
elif internal_type == "JSONField" :
111
113
converters .append (self .convert_jsonfield_value )
112
114
elif internal_type == "TimeField" :
@@ -150,6 +152,16 @@ def convert_durationfield_value(self, value, expression, connection):
150
152
value = datetime .timedelta (milliseconds = int (str (value )))
151
153
return value
152
154
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
+
153
165
def convert_jsonfield_value (self , value , expression , connection ):
154
166
"""
155
167
Convert dict data to a string so that JSONField.from_db_value() can
0 commit comments