Django volcado de datos para un solo modelo?


Puedo realizar un dumpdata en Django en un solo modelo, en lugar de toda la aplicación, y si es así, ¿cómo?

Para una aplicación sería:

python manage.py dumpdata myapp

Sin embargo, quiero algún modelo específico, como "myapp.mymodel " para ser abandonada. La razón es, tengo algunos enormes, 3 millones de registros más, conjuntos de datos en la misma aplicación que no me gustaría vertido.

Author: the Tin Man, 2009-07-11

7 answers

A partir de la versión 1.1 y superior, el Django dumpdata el comando de administración le permite volcar datos de tablas individuales:

./manage.py dumpdata myapp1 myapp2.my_model

También puede separar varias aplicaciones y modelos en la línea de comandos. Aquí está la definición canónica:

django-admin dumpdata [app_label[.ModelName] [app_label[.ModelName] ...]]
 190
Author: simplyharsh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-17 00:09:48

Como se señaló, no se puede hacer esto a través de un manage.py comando en Django 1.0. Sin embargo, puede usar un script para exportar el archivo JSON y cargarlo usando 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()
 90
Author: dar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-17 00:10:13

Creo que usted tenía la solución en su pregunta. Puede volcar un modelo individual como este:

./manage.py dumpdata myapp.my_model
 6
Author: Harold,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-19 10:35:34

Para tener éxito tuve que decirlo dos veces, y especificar el modelo dos veces, como:

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

Si solo dijera

./manage.py dumpdata myapp2 myapp2.my_model

Tengo inundado con todos los modelos de myapp2, a pesar de que he especificado my_model.

 4
Author: Csaba Toth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-20 21:32:13

Tome todos los datos en formato json del modelo django.

Sintaxis:

python manage.py dumpdata app_name.model_name

For example dumping data from group_permission model which reside in default auth app in django.

python manage.py dumpdata auth.group_permission

Para la salida echa un vistazo a consola.

 3
Author: Shubho Shaha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-07 20:10:25

Como solución alternativa, podría crear otra aplicación y copiar el modelo, pero apuntarlo a la tabla existente con la opción meta db_table. Entonces usted podría simplemente volcar los modelos que copió en la nueva aplicación. Tu aplicación existente no se vería afectada.

 1
Author: Ogre Codes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-11 07:34:27

He creado un comando de administración para generar un fixture por modelo. Los accesorios se pueden generar ejecutando:

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

Código en: https://gist.github.com/2394883

 0
Author: Jonas Geiregat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-15 21:26:10