2013-05-30 18 views
0

在我的Django應用程序,我增加了一個數據遷移(使用South)將用戶添加爲項目錯誤遷移Django的過程中引發的測試

from south.db import db 
from south.v2 import DataMigration 
from django.db import models 
... 
class Migration(DataMigration): 

    def forwards(self, orm): 
     suser = orm['auth.User'].objects.filter(is_superuser=True)[0] 
     for item in orm.MyItem.objects.all(): 
      item.creator = suser 
      item.save() 

的創造者的遷移運行時,這種成功添加創作者在database.However每個MyItem,測試現在拋出一個錯誤

Creating test database for alias 'default'... 
Error in migration: mypgm:0005_add_creator 
.. 
File "/home/me/dev/python/django/mypgm/migrations/0005_add_creator.py", line 10, in forwards 
    suser = orm['auth.User'].objects.filter(is_superuser=True)[0] 
    File "/home/me/Django-1.4/django/db/models/query.py", line 207, in __getitem__ 
    return list(qs)[0] 
IndexError: list index out of range 

我去通的query.py的SRC代碼,但無法弄清楚爲什麼會這樣..我用Django1.4python 2.6.5ubuntu lucid

如果有人能理解爲什麼這個錯誤發生,請告訴

回答

0

測試運行抱怨,因爲有超級用戶權限的用戶不能在測試數據庫中找到。很可能你沒有通過南部創建用戶。你可以使用UserManager的get_or_create方法:

def forwards(self, orm): 
    suser, created = orm['auth.User'].objects.get_or_create(...) 
+0

我已經把一個超級用戶在initial_data .will中,這樣做不夠嗎? – damon

+0

錯誤消息很明顯,你確定數據被加載了嗎? – shanyu