当syncdb时,Django不加载初始fixture

2024-03-29 02:15:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个django项目,结构如下:

/djninja # project dir
  /djninja # main app dir
  /bands # app dir
  /fans # app dir
  /lyrics # app dir

我已经创建了一个initial_data.yaml文件来制作syncdb加载fixture(我更喜欢YAML格式)。根据documentation,我将把它放在任何appfixtures子目录中。所以我做了,我有:

^{pr2}$

但是syncdb忽略了这个文件。然后我把它移到主项目目录中:

/djninja
  /djninja
    /fixtures
      - initial_data.yaml
  /bands
  /fans
  /lyrics

但它仍然被忽略了。我想在syncdb命令中加载fixture我做错了什么?在


Tags: 文件项目djangoappyamldatadir结构
2条回答

只要:

  • 你已经安装了pyyaml
  • 它位于fixtures目录中,INSTALLED_APPS(在settings.py)中列出的应用程序之一

所以,考虑到你有皮亚姆,可能是后者。请确保您的fixtures目录位于INSTALLED_APPS中列出的某个应用中,并且您应该已经启动并运行。在

对于这种布局:

/djninja
  /djninja
  /bands
    /fixtures
      - initial_data.yaml
  /fans
  /lyrics

bands添加到INSTALLED_APPS应该可以做到,因为bands是一个有效的包,并且位于{}上。在

如果希望Django在其他目录中查找fixture,可以按照"Where Django finds fixture files" subsection of the docs中给出的建议,使用FIXTURE_DIRS设置,使其成为要查找的额外目录的列表。在

显然,Django在INSTALLED_APPS中指定的应用程序中查找包含models.py的fixture。在

因此,如果你的应用程序缺少一个,创建一个空的models.py,Django不会跳过在该应用程序中查找fixture的操作。在

相关问题 更多 >