MCPcopy
hub / github.com/tortoise/tortoise-orm / state_forward

Method state_forward

tortoise/migrations/operations.py:312–338  ·  view source on GitHub ↗
(self, app_label: str, state: State)

Source from the content-addressed store, hash-verified

310 return f"Delete model {self.name}"
311
312 def state_forward(self, app_label: str, state: State) -> None:
313 model_ref = f"{app_label}.{self.name}"
314
315 for model_state in state.models.values():
316 for field_name, field in model_state.fields.items():
317 if not isinstance(field, DIRECT_RELATION_FIELDS):
318 continue
319
320 if field.model_name == model_ref:
321 raise IncompatibleStateError(
322 f"{model_ref} is still referenced from {model_state.app}.{model_state.name}"
323 )
324
325 model_state_to_delete = state.models.pop((app_label, self.name), None)
326 if not model_state_to_delete:
327 raise IncompatibleStateError()
328
329 models_to_reload = set()
330
331 for field in model_state_to_delete.fields.values():
332 if not isinstance(field, DIRECT_RELATION_FIELDS):
333 continue
334
335 models_to_reload.add(state.apps.split_reference(field.model_name))
336
337 state.apps.unregister_model(app_label, self.name)
338 state.reload_models(models_to_reload)
339
340 async def database_forward(
341 self,

Callers 2

test_simple_delete_modelFunction · 0.95

Calls 7

itemsMethod · 0.80
addMethod · 0.80
unregister_modelMethod · 0.80
reload_modelsMethod · 0.80
valuesMethod · 0.45
split_referenceMethod · 0.45

Tested by 2

test_simple_delete_modelFunction · 0.76