使用编程方式加载Django的loaddata

57
我想从Django视图中调用与manage.py loaddata等效的功能。 我希望能够指定数据加载的位置以及要将其加载到哪个应用程序中。
有什么想法吗?
1个回答

86

文档中所示的每个django-admin.py (manage.py)命令,您都可以使用以下方式从您的代码中调用:

from django.core.management import call_command

call_command('loaddata', 'myapp')

第一个参数是命令名称,所有其他位置参数与命令行位置参数相同,所有关键字参数都是选项。


5
您还可以添加选项 "verbosity=0" 来关闭控制台输出:call_command('loaddata', 'fixture_name.json', verbosity=0) - Sergey Telminov
1
文档在这里:https://docs.djangoproject.com/en/1.8/ref/django-admin/#running-management-commands-from-your-code - Renato
1
请注意,在数据迁移中不适合直接使用loaddata命令,因为它会内部加载最新的模型定义,并使用它们来反序列化固定装置中的历史数据。这是不正确的行为。解决方案在这里:https://dev59.com/T18e5IYBdhLWcg3wNYUn#39743581。 - Rockallite
8
请注意,您需要使用 app_label 关键字参数 来指定要加载 fixture 的位置,例如 call_command('loaddata','initial_data.json',app_label ='myapp')。否则,它将从所有已安装的应用程序中加载相同名称的 fixtures。 - Rockallite

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接