使用initial_data.yaml [Django 1.3]在syncdb / schemamigration期间“找不到夹具”

时间:2011-05-05 00:39:07

标签: django fixtures django-south django-fixtures

我设置了一些应用程序,其中一个我只是添加了一个夹具。我在app文件夹下的“fixtures”子目录中创建了一个“initial_data.yaml”文件,因此完整路径为project_dir\apps\job\fixtures\initial_data.yaml

我试过了两次

  

python manage.py syncdb

  

python manage.py schemamigration job --auto

他们两个都给了我:

  

找不到固定装置。

我做错了什么,这里?

4 个答案:

答案 0 :(得分:2)

你安装pyYAML吗?

http://pyyaml.org/wiki/PyYAML

manage.py需要yaml-parser来加载initial_data.yaml。

答案 1 :(得分:1)

Django文档明确指出:

  

默认情况下,Django会在每个app内的fixtures目录中查找fixture。

但我发现它不正确。如果您没有在settings.py中定义FIXTURE_DIRS,那么django将在manage.py和settings.py所在的同一目录中查找initial_data.yaml。 我在django 1.3.1中遇到过这个问题。

您还需要安装python yaml解析器,否则django将忽略yaml格式的fixture。如果您使用的是Ubuntu,则可以通过在控制台中发出以下命令来安装解析器:

sudo apt-get install python-yaml

答案 2 :(得分:0)

我认为需要进入

/project/job/fixtures/

假设您的应用名为job

答案 3 :(得分:0)

尝试以下操作,看看你如何:

转储现有数据,清空数据库,然后再次尝试syncdb(如果您愿意清除数据库):

python manage.py dumpdata
python manage.py syncdb

这有用吗?如果是这样,你有一个'蓝图'夹具文件。

如果没有,你能告诉我们你正在使用哪个版本的Django吗?