@@ -71,26 +71,18 @@ def _create_model_indexes(self, model, column_prefix="", parent_model=None):
7171 field .embedded_model , parent_model = parent_model or model , column_prefix = new_path
7272 )
7373 if self ._field_should_be_indexed (model , field ):
74- self ._add_field_index (parent_model or model , field , column_prefix = column_prefix )
74+ self ._add_field_index (model , field )
7575 elif self ._field_should_have_unique (field ):
76- self ._add_field_unique (parent_model or model , field , column_prefix = column_prefix )
76+ self ._add_field_unique (model , field )
7777 # Meta.unique_together
7878 if model ._meta .unique_together :
79- self .alter_unique_together (
80- model ,
81- [],
82- model ._meta .unique_together ,
83- column_prefix = column_prefix ,
84- parent_model = parent_model ,
85- )
79+ self .alter_unique_together (model , [], model ._meta .unique_together )
8680 # Meta.constraints
8781 for constraint in model ._meta .constraints :
88- self .add_constraint (
89- model , constraint , column_prefix = column_prefix , parent_model = parent_model
90- )
82+ self .add_constraint (model , constraint )
9183 # Meta.indexes
9284 for index in model ._meta .indexes :
93- self .add_index (model , index , column_prefix = column_prefix , parent_model = parent_model )
85+ self .add_index (model , index )
9486
9587 @ignore_embedded_models
9688 def delete_model (self , model ):
@@ -182,112 +174,77 @@ def remove_field(self, model, field):
182174 self ._remove_field_index (model , field )
183175 elif self ._field_should_have_unique (field ):
184176 self ._remove_field_unique (model , field )
185- if isinstance (field , EmbeddedModelField ):
186- new_path = f"{ field .column } ."
187- self ._remove_model_indexes (
188- field .embedded_model , parent_model = model , column_prefix = new_path
189- )
190177
191- def _remove_model_indexes (self , model , column_prefix = "" , parent_model = None ):
192- """
193- When removing an EmbeddedModelField, the indexes need to be removed
194- recursively.
195- """
178+ def _remove_model_indexes (self , model ):
196179 if not model ._meta .managed or model ._meta .proxy or model ._meta .swapped :
197180 return
198181 # Field indexes and uniques
199182 for field in model ._meta .local_fields :
200- if isinstance (field , EmbeddedModelField ):
201- new_path = f"{ column_prefix } { field .column } ."
202- self ._remove_model_indexes (
203- field .embedded_model , parent_model = parent_model or model , column_prefix = new_path
204- )
205183 if self ._field_should_be_indexed (model , field ):
206- self ._remove_field_index (parent_model or model , field , column_prefix = column_prefix )
184+ self ._remove_field_index (model , field )
207185 elif self ._field_should_have_unique (field ):
208- self ._remove_field_unique (parent_model or model , field , column_prefix = column_prefix )
186+ self ._remove_field_unique (model , field )
209187 # Meta.unique_together
210188 if model ._meta .unique_together :
211- self .alter_unique_together (
212- model ,
213- model ._meta .unique_together ,
214- [],
215- column_prefix = column_prefix ,
216- parent_model = parent_model ,
217- )
189+ self .alter_unique_together (model , model ._meta .unique_together , [])
218190 # Meta.constraints
219191 for constraint in model ._meta .constraints :
220- self .remove_constraint (parent_model or model , constraint )
192+ self .remove_constraint (model , constraint )
221193 # Meta.indexes
222194 for index in model ._meta .indexes :
223- self .remove_index (parent_model or model , index )
195+ self .remove_index (model , index )
224196
225197 @ignore_embedded_models
226- def alter_index_together (self , model , old_index_together , new_index_together , column_prefix = "" ):
198+ def alter_index_together (self , model , old_index_together , new_index_together ):
227199 olds = {tuple (fields ) for fields in old_index_together }
228200 news = {tuple (fields ) for fields in new_index_together }
229201 # Deleted indexes
230202 for field_names in olds .difference (news ):
231203 self ._remove_composed_index (
232- model , field_names , {"index" : True , "unique" : False }, column_prefix = ""
204+ model ,
205+ field_names ,
206+ {"index" : True , "unique" : False },
233207 )
234208 # Created indexes
235209 for field_names in news .difference (olds ):
236- self ._add_composed_index (model , field_names , column_prefix = column_prefix )
210+ self ._add_composed_index (model , field_names )
237211
238212 @ignore_embedded_models
239- def alter_unique_together (
240- self , model , old_unique_together , new_unique_together , column_prefix = "" , parent_model = None
241- ):
213+ def alter_unique_together (self , model , old_unique_together , new_unique_together ):
242214 olds = {tuple (fields ) for fields in old_unique_together }
243215 news = {tuple (fields ) for fields in new_unique_together }
244216 # Deleted uniques
245217 for field_names in olds .difference (news ):
246- self ._remove_composed_index (
247- model ,
248- field_names ,
249- {"unique" : True , "primary_key" : False },
250- column_prefix = column_prefix ,
251- parent_model = parent_model ,
252- )
218+ self ._remove_composed_index (model , field_names , {"unique" : True , "primary_key" : False })
253219 # Created uniques
254220 for field_names in news .difference (olds ):
255221 columns = [model ._meta .get_field (field ).column for field in field_names ]
256- name = str (
257- self ._unique_constraint_name (
258- model ._meta .db_table , [column_prefix + col for col in columns ]
259- )
260- )
222+ name = str (self ._unique_constraint_name (model ._meta .db_table , columns ))
261223 constraint = UniqueConstraint (fields = field_names , name = name )
262- self .add_constraint (
263- model , constraint , parent_model = parent_model , column_prefix = column_prefix
264- )
224+ self .add_constraint (model , constraint )
265225
266226 @ignore_embedded_models
267- def add_index (self , model , index , * , field = None , column_prefix = "" , parent_model = None ):
268- idx = index .get_pymongo_index_model (
269- model , schema_editor = self , field = field , column_prefix = column_prefix
270- )
227+ def add_index (self , model , index , field = None ):
228+ idx = index .get_pymongo_index_model (model , schema_editor = self , field = field )
271229 if idx :
272- model = parent_model or model
273230 collection = self .get_collection (model ._meta .db_table )
274231 if isinstance (idx , SearchIndexModel ):
275232 collection .create_search_index (idx )
276233 self .wait_until_index_created (collection , index .name )
277234 else :
278235 collection .create_indexes ([idx ])
279236
280- def _add_composed_index (self , model , field_names , column_prefix = "" , parent_model = None ):
237+ def _add_composed_index (self , model , field_names ):
281238 """Add an index on the given list of field_names."""
282239 idx = Index (fields = field_names )
283240 idx .set_name_with_model (model )
284- self .add_index (model , idx , column_prefix = column_prefix , parent_model = parent_model )
241+ self .add_index (model , idx )
285242
286- def _add_field_index (self , model , field , * , column_prefix = "" ):
243+ def _add_field_index (self , model , field ):
287244 """Add an index on a field with db_index=True."""
288- index = Index (fields = [column_prefix + field .name ])
289- index .name = self ._create_index_name (model ._meta .db_table , [column_prefix + field .column ])
290- self .add_index (model , index , field = field , column_prefix = column_prefix )
245+ index = Index (fields = [field .name ])
246+ index .name = self ._create_index_name (model ._meta .db_table , [field .column ])
247+ self .add_index (model , index , field = field )
291248
292249 @ignore_embedded_models
293250 def remove_index (self , model , index ):
@@ -302,18 +259,16 @@ def remove_index(self, model, index):
302259 else :
303260 collection .drop_index (index .name )
304261
305- def _remove_composed_index (
306- self , model , field_names , constraint_kwargs , column_prefix = "" , parent_model = None
307- ):
262+ def _remove_composed_index (self , model , field_names , constraint_kwargs ):
308263 """
309264 Remove the index on the given list of field_names created by
310265 index/unique_together, depending on constraint_kwargs.
311266 """
312267 meta_constraint_names = {constraint .name for constraint in model ._meta .constraints }
313268 meta_index_names = {constraint .name for constraint in model ._meta .indexes }
314- columns = [column_prefix + model ._meta .get_field (field ).column for field in field_names ]
269+ columns = [model ._meta .get_field (field ).column for field in field_names ]
315270 constraint_names = self ._constraint_names (
316- parent_model or model ,
271+ model ,
317272 columns ,
318273 exclude = meta_constraint_names | meta_index_names ,
319274 ** constraint_kwargs ,
@@ -325,17 +280,16 @@ def _remove_composed_index(
325280 f"Found wrong number ({ num_found } ) of constraints for "
326281 f"{ model ._meta .db_table } ({ columns_str } )."
327282 )
328- model = parent_model or model
329283 collection = self .get_collection (model ._meta .db_table )
330284 collection .drop_index (constraint_names [0 ])
331285
332- def _remove_field_index (self , model , field , column_prefix = "" ):
286+ def _remove_field_index (self , model , field ):
333287 """Remove a field's db_index=True index."""
334288 collection = self .get_collection (model ._meta .db_table )
335289 meta_index_names = {index .name for index in model ._meta .indexes }
336290 index_names = self ._constraint_names (
337291 model ,
338- [column_prefix + field .column ],
292+ [field .column ],
339293 index = True ,
340294 # Retrieve only BTREE indexes since this is what's created with
341295 # db_index=True.
@@ -351,31 +305,23 @@ def _remove_field_index(self, model, field, column_prefix=""):
351305 collection .drop_index (index_names [0 ])
352306
353307 @ignore_embedded_models
354- def add_constraint (self , model , constraint , field = None , column_prefix = "" , parent_model = None ):
308+ def add_constraint (self , model , constraint , field = None ):
355309 if isinstance (constraint , UniqueConstraint ) and self ._unique_supported (
356310 condition = constraint .condition ,
357311 deferrable = constraint .deferrable ,
358312 include = constraint .include ,
359313 expressions = constraint .expressions ,
360314 nulls_distinct = constraint .nulls_distinct ,
361315 ):
362- idx = constraint .get_pymongo_index_model (
363- model ,
364- schema_editor = self ,
365- field = field ,
366- column_prefix = column_prefix ,
367- )
316+ idx = constraint .get_pymongo_index_model (model , schema_editor = self , field = field )
368317 if idx :
369- model = parent_model or model
370318 collection = self .get_collection (model ._meta .db_table )
371319 collection .create_indexes ([idx ])
372320
373- def _add_field_unique (self , model , field , column_prefix = "" ):
374- name = str (
375- self ._unique_constraint_name (model ._meta .db_table , [column_prefix + field .column ])
376- )
321+ def _add_field_unique (self , model , field ):
322+ name = str (self ._unique_constraint_name (model ._meta .db_table , [field .column ]))
377323 constraint = UniqueConstraint (fields = [field .name ], name = name )
378- self .add_constraint (model , constraint , field = field , column_prefix = column_prefix )
324+ self .add_constraint (model , constraint , field = field )
379325
380326 @ignore_embedded_models
381327 def remove_constraint (self , model , constraint ):
@@ -393,12 +339,12 @@ def remove_constraint(self, model, constraint):
393339 )
394340 self .remove_index (model , idx )
395341
396- def _remove_field_unique (self , model , field , column_prefix = "" ):
342+ def _remove_field_unique (self , model , field ):
397343 # Find the unique constraint for this field
398344 meta_constraint_names = {constraint .name for constraint in model ._meta .constraints }
399345 constraint_names = self ._constraint_names (
400346 model ,
401- [column_prefix + field .column ],
347+ [field .column ],
402348 unique = True ,
403349 primary_key = False ,
404350 exclude = meta_constraint_names ,
0 commit comments