使用 call_command 在 django dumpdata 中排除多个应用程序

Excluding multiple app in django dumpdata using call_command

我正在使用 call_command 来启动数据转储,我想排除多个应用程序,所以如果我没有使用 call_command,我会按照 django 文档中的说明去做它:

python manage.py dumpdata --format json -e app1 -e app2

但是在call_command我不知道应该怎么称呼它:

from django.core.management import call_command
call_command("dumpdata", format="json", ?)

什么不起作用:

call_command("dumpdata", format="json", exclude="app1")
call_command("dumpdata", format="json", exclude="app1 app2")
# CommandError: No installed app with label 'a'.

call_command("dumpdata", format="json", e="app1")
call_command("dumpdata", format="json", e="app1 app2")
# Does not fail but does not exclude anything either

call_command("dumpdata", format="json", e="app1", e="app2")
# SyntaxError: keyword argument repeated

甚至可以使用 call_command 从转储数据中排除某些内容吗?

提前致谢。

您应该像这样使用列表来传递参数:

call_command("dumpdata", format="json", e=["app1", "app2"])

错误 No installed app with label 'a',提示 Django 如何处理 dumpdata 命令(字符串 "app1" 被视为列表)。

像这样使用这个 e 进行排除

     call_command('dumpdata','appname', '-etitanapp.databasebackup', format='json',indent=3,stdout=output)