Pregunta

¿Puedo realizar una 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" a ser objeto de dumping. La razón es que tengo unos enormes, 3 millones de discos, además, conjuntos de datos en la misma aplicación que no me gusta objeto de dumping.

¿Fue útil?

Solución

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

./manage.py dumpdata myapp1 myapp2.my_model

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

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

Otros consejos

Como se ha señalado, no se puede hacer esto a través de un comando manage.py en Django 1.0. Sin embargo se puede utilizar una secuencia de comandos 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()

Creo que será la solución en su pregunta. Se puede volcar un modelo individual como esto:

./manage.py dumpdata myapp.my_model

Tome todos los datos en formato JSON de modelo de Django.

Sintaxis:

python manage.py dumpdata app_name.model_name

ejemplo los datos de dumping de modelo group_permission que se encuentran en la aplicación de autenticación predeterminado en Django.

python manage.py dumpdata auth.group_permission

Para la salida a echar un vistazo en consola .

Para el éxito que tenía que decir dos veces, y especificar el modelo dos veces, como:

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

Si sólo dije

./manage.py dumpdata myapp2 myapp2.my_model

I se inundó con todos los modelos de myapp2, a pesar de que he especificado my_model.

Como solución alternativa se podría hacer otra aplicación y copiar el modelo, sino apuntar a la tabla existente con la opción meta db_table. Posteriormente, se podría simplemente volcar los modelos que ha copiado en la nueva aplicación. Usted aplicación existente no se vería afectada.

He creado un comando de gestión de la generar un accesorio en una base por modelo. Accesorios se pueden generar ejecutando:

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top