Как проверить наличие флага `—keepdb` в Django

#django

Вопрос:

Я создал AppConfig приложение, которое использует post_migrate сигнал для запуска дополнительного SQL каждый раз, когда я выполняю миграцию. В своих тестах я иногда использую --keepdb для ускорения выполнения тестов, но это все равно вызывает post_migrate сигнал. Как я могу проверить --keepdb , использовался ли флаг, чтобы я мог пропустить выполнение дополнительных команд SQL? Я просмотрел документацию по Django и исходный код и, похоже, не могу найти никакого способа сделать это.

Ответ №1:

Я смог решить эту проблему, создав тестировщика, который хранит --keepdb флаг в настройках, как это:

 from django.conf import settings
from django.test.runner import DiscoverRunner


class KeepDBTestRunner(DiscoverRunner):

    def __init__(self, *args, **kwargs):
        settings.KEEP_DB = kwargs.get('keepdb', False)
        super().__init__(*args, **kwargs)