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.
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] ...]]
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()
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
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.
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.
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.
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
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