@@ -65,32 +65,19 @@ def _create_model_indexes(self, model, column_prefix="", parent_model=None):
6565 return
6666 # Field indexes and uniques
6767 for field in model ._meta .local_fields :
68- if isinstance (field , EmbeddedModelField ):
69- new_path = f"{ column_prefix } { field .column } ."
70- self ._create_model_indexes (
71- field .embedded_model , parent_model = parent_model or model , column_prefix = new_path
72- )
7368 if self ._field_should_be_indexed (model , field ):
74- self ._add_field_index (parent_model or model , field , column_prefix = column_prefix )
69+ self ._add_field_index (model , field )
7570 elif self ._field_should_have_unique (field ):
76- self ._add_field_unique (parent_model or model , field , column_prefix = column_prefix )
71+ self ._add_field_unique (model , field )
7772 # Meta.unique_together
7873 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- )
74+ self .alter_unique_together (model , [], model ._meta .unique_together )
8675 # Meta.constraints
8776 for constraint in model ._meta .constraints :
88- self .add_constraint (
89- model , constraint , column_prefix = column_prefix , parent_model = parent_model
90- )
77+ self .add_constraint (model , constraint )
9178 # Meta.indexes
9279 for index in model ._meta .indexes :
93- self .add_index (model , index , column_prefix = column_prefix , parent_model = parent_model )
80+ self .add_index (model , index )
9481
9582 @ignore_embedded_models
9683 def delete_model (self , model ):
@@ -111,11 +98,6 @@ def add_field(self, model, field):
11198 self .get_collection (model ._meta .db_table ).update_many (
11299 {}, [{"$set" : {column : self .effective_default (field )}}]
113100 )
114- if isinstance (field , EmbeddedModelField ):
115- new_path = f"{ field .column } ."
116- self ._create_model_indexes (
117- field .embedded_model , parent_model = model , column_prefix = new_path
118- )
119101 # Add an index or unique, if required.
120102 if self ._field_should_be_indexed (model , field ):
121103 self ._add_field_index (model , field )
@@ -182,112 +164,77 @@ def remove_field(self, model, field):
182164 self ._remove_field_index (model , field )
183165 elif self ._field_should_have_unique (field ):
184166 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- )
190167
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- """
168+ def _remove_model_indexes (self , model ):
196169 if not model ._meta .managed or model ._meta .proxy or model ._meta .swapped :
197170 return
198171 # Field indexes and uniques
199172 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- )
205173 if self ._field_should_be_indexed (model , field ):
206- self ._remove_field_index (parent_model or model , field , column_prefix = column_prefix )
174+ self ._remove_field_index (model , field )
207175 elif self ._field_should_have_unique (field ):
208- self ._remove_field_unique (parent_model or model , field , column_prefix = column_prefix )
176+ self ._remove_field_unique (model , field )
209177 # Meta.unique_together
210178 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- )
179+ self .alter_unique_together (model , model ._meta .unique_together , [])
218180 # Meta.constraints
219181 for constraint in model ._meta .constraints :
220- self .remove_constraint (parent_model or model , constraint )
182+ self .remove_constraint (model , constraint )
221183 # Meta.indexes
222184 for index in model ._meta .indexes :
223- self .remove_index (parent_model or model , index )
185+ self .remove_index (model , index )
224186
225187 @ignore_embedded_models
226- def alter_index_together (self , model , old_index_together , new_index_together , column_prefix = "" ):
188+ def alter_index_together (self , model , old_index_together , new_index_together ):
227189 olds = {tuple (fields ) for fields in old_index_together }
228190 news = {tuple (fields ) for fields in new_index_together }
229191 # Deleted indexes
230192 for field_names in olds .difference (news ):
231193 self ._remove_composed_index (
232- model , field_names , {"index" : True , "unique" : False }, column_prefix = ""
194+ model ,
195+ field_names ,
196+ {"index" : True , "unique" : False },
233197 )
234198 # Created indexes
235199 for field_names in news .difference (olds ):
236- self ._add_composed_index (model , field_names , column_prefix = column_prefix )
200+ self ._add_composed_index (model , field_names )
237201
238202 @ignore_embedded_models
239- def alter_unique_together (
240- self , model , old_unique_together , new_unique_together , column_prefix = "" , parent_model = None
241- ):
203+ def alter_unique_together (self , model , old_unique_together , new_unique_together ):
242204 olds = {tuple (fields ) for fields in old_unique_together }
243205 news = {tuple (fields ) for fields in new_unique_together }
244206 # Deleted uniques
245207 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- )
208+ self ._remove_composed_index (model , field_names , {"unique" : True , "primary_key" : False })
253209 # Created uniques
254210 for field_names in news .difference (olds ):
255211 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- )
212+ name = str (self ._unique_constraint_name (model ._meta .db_table , columns ))
261213 constraint = UniqueConstraint (fields = field_names , name = name )
262- self .add_constraint (
263- model , constraint , parent_model = parent_model , column_prefix = column_prefix
264- )
214+ self .add_constraint (model , constraint )
265215
266216 @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- )
217+ def add_index (self , model , index , field = None ):
218+ idx = index .get_pymongo_index_model (model , schema_editor = self , field = field )
271219 if idx :
272- model = parent_model or model
273220 collection = self .get_collection (model ._meta .db_table )
274221 if isinstance (idx , SearchIndexModel ):
275222 collection .create_search_index (idx )
276223 self .wait_until_index_created (collection , index .name )
277224 else :
278225 collection .create_indexes ([idx ])
279226
280- def _add_composed_index (self , model , field_names , column_prefix = "" , parent_model = None ):
227+ def _add_composed_index (self , model , field_names ):
281228 """Add an index on the given list of field_names."""
282229 idx = Index (fields = field_names )
283230 idx .set_name_with_model (model )
284- self .add_index (model , idx , column_prefix = column_prefix , parent_model = parent_model )
231+ self .add_index (model , idx )
285232
286- def _add_field_index (self , model , field , * , column_prefix = "" ):
233+ def _add_field_index (self , model , field ):
287234 """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 )
235+ index = Index (fields = [field .name ])
236+ index .name = self ._create_index_name (model ._meta .db_table , [field .column ])
237+ self .add_index (model , index , field = field )
291238
292239 @ignore_embedded_models
293240 def remove_index (self , model , index ):
@@ -302,18 +249,16 @@ def remove_index(self, model, index):
302249 else :
303250 collection .drop_index (index .name )
304251
305- def _remove_composed_index (
306- self , model , field_names , constraint_kwargs , column_prefix = "" , parent_model = None
307- ):
252+ def _remove_composed_index (self , model , field_names , constraint_kwargs ):
308253 """
309254 Remove the index on the given list of field_names created by
310255 index/unique_together, depending on constraint_kwargs.
311256 """
312257 meta_constraint_names = {constraint .name for constraint in model ._meta .constraints }
313258 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 ]
259+ columns = [model ._meta .get_field (field ).column for field in field_names ]
315260 constraint_names = self ._constraint_names (
316- parent_model or model ,
261+ model ,
317262 columns ,
318263 exclude = meta_constraint_names | meta_index_names ,
319264 ** constraint_kwargs ,
@@ -325,17 +270,16 @@ def _remove_composed_index(
325270 f"Found wrong number ({ num_found } ) of constraints for "
326271 f"{ model ._meta .db_table } ({ columns_str } )."
327272 )
328- model = parent_model or model
329273 collection = self .get_collection (model ._meta .db_table )
330274 collection .drop_index (constraint_names [0 ])
331275
332- def _remove_field_index (self , model , field , column_prefix = "" ):
276+ def _remove_field_index (self , model , field ):
333277 """Remove a field's db_index=True index."""
334278 collection = self .get_collection (model ._meta .db_table )
335279 meta_index_names = {index .name for index in model ._meta .indexes }
336280 index_names = self ._constraint_names (
337281 model ,
338- [column_prefix + field .column ],
282+ [field .column ],
339283 index = True ,
340284 # Retrieve only BTREE indexes since this is what's created with
341285 # db_index=True.
@@ -351,31 +295,23 @@ def _remove_field_index(self, model, field, column_prefix=""):
351295 collection .drop_index (index_names [0 ])
352296
353297 @ignore_embedded_models
354- def add_constraint (self , model , constraint , field = None , column_prefix = "" , parent_model = None ):
298+ def add_constraint (self , model , constraint , field = None ):
355299 if isinstance (constraint , UniqueConstraint ) and self ._unique_supported (
356300 condition = constraint .condition ,
357301 deferrable = constraint .deferrable ,
358302 include = constraint .include ,
359303 expressions = constraint .expressions ,
360304 nulls_distinct = constraint .nulls_distinct ,
361305 ):
362- idx = constraint .get_pymongo_index_model (
363- model ,
364- schema_editor = self ,
365- field = field ,
366- column_prefix = column_prefix ,
367- )
306+ idx = constraint .get_pymongo_index_model (model , schema_editor = self , field = field )
368307 if idx :
369- model = parent_model or model
370308 collection = self .get_collection (model ._meta .db_table )
371309 collection .create_indexes ([idx ])
372310
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- )
311+ def _add_field_unique (self , model , field ):
312+ name = str (self ._unique_constraint_name (model ._meta .db_table , [field .column ]))
377313 constraint = UniqueConstraint (fields = [field .name ], name = name )
378- self .add_constraint (model , constraint , field = field , column_prefix = column_prefix )
314+ self .add_constraint (model , constraint , field = field )
379315
380316 @ignore_embedded_models
381317 def remove_constraint (self , model , constraint ):
@@ -393,12 +329,12 @@ def remove_constraint(self, model, constraint):
393329 )
394330 self .remove_index (model , idx )
395331
396- def _remove_field_unique (self , model , field , column_prefix = "" ):
332+ def _remove_field_unique (self , model , field ):
397333 # Find the unique constraint for this field
398334 meta_constraint_names = {constraint .name for constraint in model ._meta .constraints }
399335 constraint_names = self ._constraint_names (
400336 model ,
401- [column_prefix + field .column ],
337+ [field .column ],
402338 unique = True ,
403339 primary_key = False ,
404340 exclude = meta_constraint_names ,
0 commit comments