Сигнал post_migrate - вызов только один раз после всех миграций
В этом (очень упрощенном) примере мне нужно сделать одну вещь (вызвать do_something_after_all_apps_migrated()
) после того, как все приложения мигрировали.
Проблема в том, что сигнал post_migrate
вызывается один раз для каждого приложения.
У меня есть одно приложение: after_migrations
apps.py
from django.apps import AppConfig
from django.db.models.signals import post_migrate
from django.dispatch import receiver
class AfterMigrationsConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'after_migrations'
def ready(self):
@receiver(post_migrate)
def _post_migrate(sender,**kwargs):
app_name = kwargs['app_config'].name
if app_name == 'after_migrations':
do_something_after_all_apps_migrated()
Как вы видите, это будет работать, но проблема в том, что не гарантируется, что мое приложение (after_migrations
) является последним приложением, которое было перенесено. Это означает, что структура базы данных не гарантирована.
Как я могу вызвать do_something_after_all_apps_migrated()
после того, как все мигрировало? Это не обязательно должен быть сигнал.