1

我正在使用 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 从转储数据中排除某些内容吗?

提前致谢。

4

2 回答 2

1

您应该使用一个列表来传递这样的参数:

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

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

于 2017-03-03T16:16:29.210 回答
0

像这样使用这个 e 排除

     call_command('dumpdata','appname', '-etitanapp.databasebackup', format='json',indent=3,stdout=output)
于 2018-01-12T11:46:50.163 回答