Как исключить выполнение определенных системных проверок в `manage.py migrate`?

Я создал серию проверок, используя Django's System check framework.

Некоторые из проверок используются для подтверждения того, что приспособления настроены правильно. Например, у меня есть проверка, которая подтверждает, что у всех пользователей есть хотя бы одна группа.

@register(Tag.database)
def check_users_have_group(app_configs, **kwargs):
    errors = []
    users = UserModel.objects.all()
    for user in users:
         if not user.groups.exists():
              message = f'{user} has no permission groups set.'
                    errors.append(
                        Error(
                            message,
                            obj='account',
                            id=f'check_user_{user.id}_permission_groups'
                        )
                    )
    return errors

По умолчанию Django запускает проверки на migration. Если я разверну приложение без существующей базы данных, то когда я запущу migrate для установки базы данных, вышеуказанная проверка вызовет ошибку ProgrammingError, поскольку таблица еще не создана:

django.db.utils.ProgrammingError: relation "accounts_account" does not exist

Как я могу исключить выполнение этого теста на python manage.py migrate? Я хочу запустить его после завершения миграции

По умолчанию Django запускает проверки при миграции

.

OP может настроить его так, чтобы он не был таким, используя флаг --skip-tests, как

django-admin migrate --skip-checks

Как указано в предыдущей ссылке

Эта опция доступна, только если атрибут команды requires_system_checks не является пустым списком или кортежем.

Итак, ОП должен настроить requires_system_checks на соответствие тому, что хочет ОП, потому что значение по умолчанию - 'all'.

Поскольку ОП не хочет запускать Tags.database, не включайте его в список. Таким образом, ОП будет иметь что-то вроде

requires_system_checks = [Tags.staticfiles, Tags.models]
Вернуться на верх