如何从所有应用程序加载Django灯具?

我在我的Django应用程序中使用了fixture,但只有两个应用程序正在加载他们的灯具。 当我用--verbosity = 2手动运行loaddata时,我可以看到它只在两个应用程序中查找,尽管我有更多内部创建的fixtures目录。 所有应用都已正确安装在settings.py中。 从文档中可以看出,Django应该在每个已安装应用程序的fixtures /目录中进行搜索。 为什么有些应用被忽略了?     
已邀请:
每次执行syncdb时都会导入Initial_data。尽管我记得很公平,它还会覆盖您手动完成的任何更改。 要加载其他灯具,您必须使用manage.py loaddata fixturename。 如果您在所有应用程序中使用通用命名方案,那么这种方法很有效。 如果不这样做,则必须为loaddata指定每个名称,或使用find来获取 每个中的fixture和exec loaddata列表: 编辑:(当我在virtualenv中添加manage.py到/ bin时,我安装django包我只使用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 )
    
试试这种方式
python manage.py loaddata initial_data
或者在程序上你可以称之为
from django.core.management import call_command
call_command('loaddata', 'initial_data', verbosity=3, database='default')
    
问题是Django只在提供模型的应用程序中查找灯具。您可能有一个没有型号的应用程序,但您仍然想要加载一些灯具(可能是另一个已安装应用的示例数据)。 Django中这种行为的罪魁祸首是
get_apps()
loaddata.py
: django.core.management.commands.loaddata,第102行 django.db.models.loading,第132行 要欺骗Django查看你的应用程序的
<app>/fixtures/
文件夹,你必须在应用程序中添加一个(空)
models.py
文件。 (很好,并对该文件发表评论以使事情变得清晰!) &LT;应用&GT; /models.py
"""
No real model, just an empty file to make Django load the fixtures.
"""
然后,手动运行
python manage.py loaddata <fixture>
将找到您的应用程序的夹具文件。     
您必须将fixture数据放在initial_data。[json | xml,...]文件中。 我认为默认情况下只加载那些文件。 APPDIR /装置/ initial_data.json     

要回复问题请先登录注册