@@ -171,9 +171,7 @@ def _build_conflict_target(self):
171171 ) % str (self .query .conflict_target ))
172172
173173 def _assert_valid_field (field_name ):
174- if isinstance (field_name , tuple ):
175- field_name , _ = field_name
176-
174+ field_name = self ._normalize_field_name (field_name )
177175 if self ._get_model_field (field_name ):
178176 return
179177
@@ -215,9 +213,7 @@ def _get_model_field(self, name: str):
215213 no such field exists.
216214 """
217215
218- field_name = name
219- if isinstance (field_name , tuple ):
220- field_name = field_name [0 ]
216+ field_name = self ._normalize_field_name (name )
221217
222218 for field in self .query .model ._meta .local_concrete_fields :
223219 if field .name == field_name or field .column == field_name :
@@ -253,12 +249,29 @@ def _format_field_value(self, field_name) -> str:
253249 in SQL.
254250 """
255251
256- if isinstance (field_name , tuple ):
257- field_name , _ = field_name
258-
252+ field_name = self ._normalize_field_name (field_name )
259253 field = self ._get_model_field (field_name )
254+
260255 return SQLInsertCompiler .prepare_value (
261256 self ,
262257 field ,
263258 getattr (self .query .objs [0 ], field_name )
264259 )
260+
261+ def _normalize_field_name (self , field_name ) -> str :
262+ """Normalizes a field name into a string by
263+ extracting the field name if it was specified
264+ as a reference to a HStore key (as a tuple).
265+
266+ Arguments:
267+ field_name:
268+ The field name to normalize.
269+
270+ Returns:
271+ The normalized field name.
272+ """
273+
274+ if isinstance (field_name , tuple ):
275+ field_name , _ = field_name
276+
277+ return field_name
0 commit comments