django - 如何从所有应用程序加载 Django 装置?

标签 django unit-testing fixtures django-fixtures

我在我的 Django 应用程序中使用夹具,但只有两个应用程序正在加载它们的夹具。

当我使用 --verbosity=2 手动运行 loaddata 时,我可以看到它只在两个应用程序中查找,尽管我在其中创建了更多的设备目录。

所有应用程序都正确安装在 settings.py 中。

从文档看来,Django 应该在每个已安装应用程序的 fixtures/目录中进行搜索。

为什么某些应用程序被忽略的任何想法?

最佳答案

每次执行同步数据库时都会导入 Initial_data。正如我所记得的那样,它还会覆盖您手动完成的任何更改。

要加载其他装置,您必须使用 manage.py loaddata夹具名称。
如果您在所有应用程序中使用通用命名方案,那效果会很好。
如果不这样做,则必须为每个 loaddata 指定名称,或者使用 find 来获取
每一个中的装置和 exec loaddata 的列表:

编辑:(因为我在安装 django 包时将 manage.py 添加到 virtualenv 中的/bin 我只使用 manage.py,如果你不使用,你当然需要 python manage.py loaddata)

find . -name "*.json" -exec manage.py loaddata {} \;

我在 fabfile 中使用它来自动化分段安装:
def load_all_fixtures():
    """Loads all the fixtures in every dir"""
    with cd(env.directory):
        run("""
            source /usr/local/bin/virtualenvwrapper.sh &&
            workon %s &&
            find -L . -name "*.json" -exec manage.py loaddata {} \;

            """ % env.virtualenv )

关于django - 如何从所有应用程序加载 Django 装置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5167276/

相关文章:

java - 如何使用 @PathVariable 对 Spring MVC Controller 进行单元测试?

java - Spring MVC;测试重定向是否是相对的

php - 如何在没有 fixture 的情况下在 Yii PHPUnit 测试中创建模型对象?

django - 在 Ubuntu WSL2 上连接到本地主机的问题

python - 如何在 Django Admin 中使用 can_add_related

angular - 预计 observable 在 Angular/Karma/Jasmine 测试中失败

typescript - Cypress fixtures 最佳实践

symfony - 如何在 Symfony2 中使用 Behat 和 Liip\FunctionalTestBundle?

python - Django TimeLimitExceeded 错误

mysql - 构建 Docker mysql 数据库后抛出 OperationalError