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

Method state_forward

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

Source from the content-addressed store, hash-verified

168 return self._model
169
170 def state_forward(self, app_label: str, state: State) -> None:
171 model_state = ModelState.make_from_model(app_label, self.model)
172 state.models[(app_label, self.name)] = model_state
173
174 models_to_reload = {(app_label, self.name)}
175
176 for field in model_state.fields.values():
177 if not isinstance(field, DIRECT_RELATION_FIELDS):
178 continue
179
180 related_key = state.apps.split_reference(field.model_name)
181 if related_key in state.models:
182 models_to_reload.add(related_key)
183
184 # Also find existing models that reference the newly created model.
185 # This handles the case where a model with a FK was created before its
186 # target (e.g. alphabetical ordering: Alert before Warehouse).
187 new_model_ref = f"{app_label}.{self.name}"
188 for key, existing_state in state.models.items():
189 if key == (app_label, self.name):
190 continue
191 for field in existing_state.fields.values():
192 if isinstance(field, DIRECT_RELATION_FIELDS) and field.model_name == new_model_ref:
193 models_to_reload.add(key)
194 break
195
196 state.reload_models(models_to_reload)
197
198 async def database_forward(
199 self,

Calls 6

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