我有一个django项目,结构如下:
/djninja # project dir
/djninja # main app dir
/bands # app dir
/fans # app dir
/lyrics # app dir
我创建了一个initial_data.yaml
文件来制作syncdb
加载装置(我更喜欢YAML格式)。根据{{3}},我将把它放在任何app fixtures
子目录中。所以我做了,我有:
/djninja
/djninja
/bands
/fixtures
- initial_data.yaml
/fans
/lyrics
但是syncdb省略了该文件。然后我将其移动到主项目目录中:
/djninja
/djninja
/fixtures
- initial_data.yaml
/bands
/fans
/lyrics
仍然被忽略了。我想在syncdb
命令中加载灯具我做错了什么?
答案 0 :(得分:7)
显然Django会在INSTALLED_APPS
中指定的应用中查找具有models.py
内容的灯具。
因此,如果您的应用程序缺少一个,请创建一个空的models.py
,Django将不会跳过在该应用程序中查找灯具。
答案 1 :(得分:1)
initial_data.yaml
应该被选中:
fixtures
(INSTALLED_APPS
)settings.py
目录中
所以,鉴于你有pyyaml,它可能是后者。请确保您的fixtures
目录位于INSTALLED_APPS
中列出的某个应用内,并且您应该已启动并运行。
如果是这种布局:
/djninja
/djninja
/bands
/fixtures
- initial_data.yaml
/fans
/lyrics
将bands
添加到INSTALLED_APPS
应该可以解决问题,因为bands
是一个有效的包,并且在PYTHONPATH
上。
如果您希望Django在其他目录中查找灯具,您可以按照"Where Django finds fixture files" subsection of the docs中给出的建议使用FIXTURE_DIRS
设置,使其成为要查看的额外目录的列表。