0

在我的 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

我通过了 src 代码,query.py 但无法弄清楚为什么会发生这种情况..我正在使用Django1.4with python 2.6.5onubuntu lucid

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

4

1 回答 1

0

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

def forwards(self, orm):
    suser, created = orm['auth.User'].objects.get_or_create(...)
于 2013-05-30T06:22:44.630 回答