l使用loaddata在django迁移中加载夹具

时间:2015-09-02 17:55:22

标签: django django-migrations

我的django应用程序需要数据才能正常工作,因此在某些迁移中,我使用推荐的方法加载了几乎所有堆栈溢出答案的数据:

    from django.core.management import call_command

    def load_fixture(apps, schema_editor):
        call_command('loaddata', 'fixture_name', app_label='my_app')

    class Migration(migrations.Migration):

        ...

        operations = [
            migrations.RunPython(load_fixture),
        ]

在以下迁移中,我删除了一个字段并添加了另一个字段。到目前为止一切都很好。

现在我想测试我的应用程序,但是在创建测试数据库时,上面的'call_command'失败了,因为fixtures没有为下次迁移中创建的字段指定值。我怀疑这是因为call_command没有加载测试数据库上的对象,而是加载settings.DATABASES['default']

我应该如何在迁移中加载fixture以便构建测试数据库?

1 个答案:

答案 0 :(得分:0)

对于测试,我知道您可以加载Djangos TestCase中的灯具,请参阅django docs

对于制作,使用loaddata进行拍摄的方法似乎是可行的,但是您需要确保您的灯具保持最新(正如您所强调的那样),因为灯具插入非常有力,另一种选择是使用RunPython操作中的ORM创建模型,这可以帮助他们更灵活。

Django中有一个feature request更多official,但我不确定它是否被考虑,但它只会增加夹具加载的便利性,而不是一种方式使灯具动态..

this other stack overflow post包含一些其他有趣的方法

希望以某种方式提供帮助