django测试期间抛出的迁移错误

时间:2013-05-30 05:44:46

标签: django testing django-south

在我的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.5ubuntu lucid

如果有人能够理解为什么会发生这种错误,请告诉

1 个答案:

答案 0 :(得分:0)

测试运行器抱怨,因为在测试数据库中找不到具有超级用户权限的用户。很可能你没有通过南方创建用户。您可以使用UserManager的get_or_create方法:

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