我在我的 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/