我可以在只是一个单一的模型执行的Django 一个dumpdata,而不是整个应用程序,如果是,如何?

有关的应用程序将是:

python manage.py dumpdata myapp

然而,我要一些具体型号,如“myapp.mymodel”转储。其原因是,我有一些巨大的,300万条记录加分,数据集,我不会喜欢甩相同的应用程序。

有帮助吗?

解决方案

作为1.1版本和更高,Django的 dumpdata 管理命令可以转储从各个表数据:

./manage.py dumpdata myapp1 myapp2.my_model

您也可以在命令行上分隔多个应用程序和车型。这里的规范定义:

django-admin dumpdata [app_label[.ModelName] [app_label[.ModelName] ...]]

其他提示

如所指出的,可以不通过在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()

我觉得你有你的问题解决方案。你可以转储一个单独的模型是这样的:

./manage.py dumpdata myapp.my_model

以从django的模型中的所有数据为JSON格式。

<强>语法:

python manage.py dumpdata app_name.model_name

有关的例如从group_permission模型倾销数据驻留在缺省auth应用在Django。

python manage.py dumpdata auth.group_permission

有关输出采取一看的控制台

有关的成功,我说了两遍,并指定型号的两倍,如:

./manage.py dumpdata myapp2.my_model myapp2.my_model

如果我只说

./manage.py dumpdata myapp2 myapp2.my_model

我被淹没在myapp2所有的车型,尽管我指定my_model的事实。

作为一种变通方法,你可以让另一个应用程序,并复制模型,但它与db_table元选项指向现有的表。然后,你可以只甩了你复制到新的应用程序模型。您现有的应用程序将不会受到影响。

我已经创建了一个管理命令的生成基于每个模型基础的固定装置。 夹具可以通过运行产生:

./manage generate_fixtures app.model.MyModel --file=dump/MyModel.json

在代码: https://gist.github.com/2394883

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top