type serializers problem installing exclude deserializationerror data content commands django django-models loaddata dumpdata

exclude - django.core.serializers.base.deserializationerror: problem installing fixture



Django volcado de datos para un solo modelo? (7)

¿Puedo realizar un dumpdata en Django con solo un 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 que se descarte un modelo específico, como "myapp.mymodel". La razón es que tengo unos enormes conjuntos de datos de más de 3 millones de registros en la misma aplicación que no me gustaría descargar.


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

./manage.py dumpdata myapp1 myapp2.my_model

También puede separar múltiples aplicaciones y modelos en la línea de comando. Aquí está la definición canónica:

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


Como se señaló, no puede hacer esto a través de un comando manage.py en Django 1.0. Sin embargo, podría 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()


Como solución, puede crear otra aplicación y copiar el modelo, pero apúntelo a la tabla existente con la opción meta db_table. Entonces podrías simplemente volcar los modelos que copiaste en la nueva aplicación. Tu aplicación existente no se vería afectada.


Creé un comando de administración para generar un accesorio 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


Creo que tuviste la solución en tu pregunta. Puede volcar un modelo individual como este:

./manage.py dumpdata myapp.my_model


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

Me inundé con todos los modelos en myapp2, a pesar de que especifiqué my_model.


Tome todos los datos en formato json del modelo django.

Sintaxis:

python manage.py dumpdata app_name.model_name

Por ejemplo, volcar los datos del modelo group_permission que reside en la aplicación de autenticación predeterminada en django.

python manage.py dumpdata auth.group_permission

Para salida, échale un vistazo a la consola .