我的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以便构建测试数据库?
答案 0 :(得分:0)
对于测试,我知道您可以加载Djangos TestCase中的灯具,请参阅django docs
对于制作,使用loaddata
进行拍摄的方法似乎是可行的,但是您需要确保您的灯具保持最新(正如您所强调的那样),因为灯具插入非常有力,另一种选择是使用RunPython
操作中的ORM创建模型,这可以帮助他们更灵活。
Django中有一个feature request更多official
,但我不确定它是否被考虑,但它只会增加夹具加载的便利性,而不是一种方式使灯具动态..
this other stack overflow post包含一些其他有趣的方法
希望以某种方式提供帮助