Как исключить выполнение определенных системных проверок в `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]