首页 > 解决方案 > 如何在 Django 中检查 `--keepdb` 标志

问题描述

我创建了一个每次执行迁移时都AppConfig使用信号运行一些额外 SQL 的方法。post_migrate在我的测试中,有时我--keepdb会加快运行测试的速度,但它仍在触发post_migrate信号。如何检查是否--keepdb使用了该标志,以便跳过运行额外的 SQL 命令?我查看了 Django 文档和源代码,但似乎找不到任何方法。

标签: django

解决方案


--keepdb我可以通过创建一个将标志存储在设置中的 TestRunner 来解决这个问题,如下所示:

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)

推荐阅读