Django转储单个模型的数据?

nat*_*ood 130 django django-models loaddata dumpdata

我可以dumpdata在一个模型上执行一个Django,而不是整个应用程序,如果是这样,怎么样?

对于一个应用程序,它将是:

python manage.py dumpdata myapp
Run Code Online (Sandbox Code Playgroud)

但是,我想要一些特定的模型,例如"myapp.mymodel"被转储.原因是,我有一些巨大的,300万条记录,数据集在同一个应用程序中,我不喜欢转储.

sim*_*rsh 222

从版本1.1及更高版本开始,Django dumpdata管理命令允许您从各个表转储数据:

./manage.py dumpdata myapp1 myapp2.my_model
Run Code Online (Sandbox Code Playgroud)

您还可以在命令行上分隔多个应用程序和模型.这是规范的定义:

django-admin dumpdata [app_label[.ModelName] [app_label[.ModelName] ...]]
Run Code Online (Sandbox Code Playgroud)

  • django 1.3 ./manage.py dumpdata myapp.mymodel (19认同)
  • 加思,不明白对近2年的职位的否定投票.而且上面的代码即使用v1.1也能正常工作.新版本中的新功能不会使旧答案无效. (17认同)
  • 要使人类可读的 json 在 `dumpdata` 后使用标志 `--indent 4` (2认同)

dar*_*dar 97

如上所述,您无法通过Django 1.0中的manage.py命令执行此操作.但是,您可以使用脚本导出JSON文件,并使用loaddata以下命令加载它:

from django.core import serializers
from myproject.myapp import models
data = serializers.serialize("json", models.MyModel.objects.all())
out = open("mymodel.json", "w")
out.write(data)
out.close()
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很棒的脚本,因为如果你愿意,你可以更加细化.如果您在上面的第三行上执行.filter(...),则可以只转储所需的特定记录. (4认同)

Shu*_*aha 8

从django模型将所有数据转换为json格式.

句法:

python manage.py dumpdata app_name.model_name
Run Code Online (Sandbox Code Playgroud)

对于例如倾倒从其中驻留在缺省auth应用在Django group_permission模型数据.

python manage.py dumpdata auth.group_permission
Run Code Online (Sandbox Code Playgroud)

有关输出,请查看控制台.


小智 7

特定文件的特定模型:

python manage.py dumpdata app_label.ModelName > specific_file.json
Run Code Online (Sandbox Code Playgroud)

并将其加载到另一个应用程序:首先将文件移动或复制到要处理它的应用程序,然后:

python manage.py loaddata specific_file.json
Run Code Online (Sandbox Code Playgroud)


Har*_*old 6

我认为你在问题中有解决方案.你可以像这样转储一个单独的模型:

./manage.py dumpdata myapp.my_model
Run Code Online (Sandbox Code Playgroud)


Csa*_*oth 5

为了成功,我不得不说两次,并两次指定模型,例如:

./manage.py dumpdata myapp2.my_model myapp2.my_model
Run Code Online (Sandbox Code Playgroud)

如果我只说

./manage.py dumpdata myapp2 myapp2.my_model
Run Code Online (Sandbox Code Playgroud)

尽管我指定了 my_model,但我还是被 myapp2 中的所有模型淹没了。