2010-10-30 60 views
7

我犯了一个创建我自己的用户模型的错误,并试图恢复。在南迁移之前加载灯具

我创建了一个南迁移,它复制我的旧用户模型并创建django.contrib.auth.models.User模型。为了确保我目前的用户不会在黑暗中离开,我创建了一堆单元测试,以确保所有内容都得到适当的转换。

所以,我需要测试南迁移,看看它是否工作。为此,我需要在迁移运行之前加载旧用户类型的数据。我怎么做?

回答

7

当测试套件通过python manage.py test someapp运行时,首先创建一个测试数据库,然后按顺序应用所有迁移,然后运行测试用例。因此,如果目标是测试迁移本身,则需要在迁移之前加载fixture数据。

您可以将一行或两个加载夹具添加到您的迁移中,只是为了测试而应用您的模型更改,然后删除。

def forwards(self, orm): 
    from django.core import management 
    management.call_command('loaddata', 'myfixture.json') 
    ... your migration 

此外,还可以在一些由Django的设置添加一个条件,那么你就无需再编辑代码。

+0

请注意,以这种方式加载'initial_data'是一个坏主意:经过一段时间后,您最终会在'initial_data.json'中添加新的对象实例,这会在模型迁移之前加载。测试和未经批准;)。 – 2014-05-28 09:15:07