在我的django应用中,我添加了一个数据迁移(使用South
)来添加用户作为项目的创建者
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()
运行迁移时,这为数据库中的每个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.4
上使用python 2.6.5
和ubuntu lucid
如果有人能够理解为什么会发生这种错误,请告诉
答案 0 :(得分:0)
测试运行器抱怨,因为在测试数据库中找不到具有超级用户权限的用户。很可能你没有通过南方创建用户。您可以使用UserManager的get_or_create方法:
def forwards(self, orm):
suser, created = orm['auth.User'].objects.get_or_create(...)