2011-05-05 119 views
2

我有幾個應用程序設置,其中一個我剛剛添加了一個fixture。我在應用程序文件夾下的子目錄「fixture」中創建了一個「initial_data.yaml」文件,因此完整路徑爲project_dir\apps\job\fixtures\initial_data.yaml使用initial_data.yaml在syncdb/schemamigration期間發現「No fixtures」[Django 1.3]

我都試過

蟒蛇manage.py執行syncdb

蟒蛇manage.py schemamigration工作--auto

無一不他們給我:

找不到燈具。

我在做什麼錯,在這裏?

+0

您的INSTALLED_APPS設置如何顯示?你是否親手製作燈具?如果是這樣,請通過yaml解析器檢查它是否有語法錯誤。 – 2011-05-05 00:51:22

+0

@Torsten 'INSTALLED_APPS =( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 「django.contrib中。消息, ‘django.contrib.staticfiles’, #取消下一行,使管理員: ‘django.contrib.admin’, #取消下一行啓用管理文件: #「django.contrib中。 admindocs', 'django.contrib.webdesign', 'south', 'haystack', #Our Apps# 'jobfinder.apps.job', 'jobfinder.apps.profile', )' – 2011-05-05 01:21:31

+0

通過一個YAML解析器,糾正了我所有的錯誤,仍然說它找不到。想通了,我需要安裝PyYaml,但後來決定只是去JSON路線。 我覺得這裏有一塊我在這裏失蹤的難題:/ – 2011-05-05 01:22:25

回答

2

你安裝pyYAML嗎?

http://pyyaml.org/wiki/PyYAML

manage.py需要YAML解析器負載initial_data.yaml。

+0

只是想指出,這也記錄在Django文檔中:http://docs.djangoproject.com/en/1.3/topics/serialization/#id1另外,包含FIXTURE_DIRS設置很重要。 希望這會幫助其他任何人在未來可能會發生這個問題:) – 2011-05-24 19:05:58

+0

我與initial_data.yaml在同一目錄manage.py。我不使用FIXTURE_DIRS。 – 99blues 2011-05-25 05:14:51

0

我認爲它需要去

/project/job/fixtures/ 

假設你的應用程序被命名爲job

+1

這並沒有什麼區別:< – 2011-05-05 01:19:58

0

請嘗試以下,看你怎麼去:

轉儲您的現有數據,清空你的DB,然後再次嘗試syncdb(如果您願意清除數據庫):

python manage.py dumpdata 
python manage.py syncdb 

這是否工作?如果是這樣,你有一個'藍圖'夾具文件。

如果您不能讓我們知道您使用的是哪個版本的Django?

+0

查看我的問題中的最終評論。我最終搞清楚了。順便說一下,我使用的是Django 1.3。欣賞它。 – 2011-05-05 01:48:48

1

Django文檔中明確指出:

默認情況下,Django就在每個應用程序的固定裝置內的燈具目錄。

但我發現它是不是真的。如果您沒有在settings.py中定義FIXTURE_DIRS,那麼django將在manage.py和settings.py所在的同一目錄中查找initial_data.yaml。 我曾與django 1.3.1這個問題。

您還需要安裝python yaml解析器,否則django將忽略yaml格式的fixtures。如果您使用的是Ubuntu,則可以通過在控制檯中發出以下命令來安裝解析器:

sudo apt-get install python-yaml