Question

Puis-je effectuer une dumpdata sur un seul modèle Django , plutôt que l'application entière, et si oui, comment?

Pour une application, il serait:

python manage.py dumpdata myapp

Cependant, je veux certains modèles spécifiques, tels que « myapp.mymodel » sous-évalués. La raison, j'ai quelques énormes, 3 millions de disques, ainsi que des jeux de données dans la même application que je ne voudrais pas l'objet de dumping.

Était-ce utile?

La solution

de la version 1.1 et plus, Django dumpdata commande de gestion permet de vider les données des tables individuelles:

./manage.py dumpdata myapp1 myapp2.my_model

Vous pouvez également séparer plusieurs applications et modèles sur la ligne de commande. Voici la définition canonique:

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

Autres conseils

Comme il est indiqué, vous ne pouvez pas le faire à travers une commande manage.py dans Django 1.0. Cependant, vous pouvez utiliser un script pour exporter le fichier JSON, et le charger en utilisant 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()

Je pense que vous avez la solution dans votre question. Vous pouvez jeter un modèle individuel comme celui-ci:

./manage.py dumpdata myapp.my_model

Prendre toutes les données en format JSON du modèle django.

Syntaxe:

python manage.py dumpdata app_name.model_name

exemple données relatives au dumping de modèle group_permission qui résident dans l'application par défaut auth dans django.

python manage.py dumpdata auth.group_permission

Pour la sortie un coup d'oeil sur la console .

Pour le succès que je devais le dire deux fois, et préciser deux fois le modèle, comme:

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

Si je ne dis

./manage.py dumpdata myapp2 myapp2.my_model

Je suis inondé de tous les modèles myapp2, malgré le fait que je spécifié my_model.

Pour contourner ce problème, vous pouvez faire une autre application et copier le modèle, mais pointer à la table existante avec l'option db_table méta. Ensuite, vous pouvez simplement vider les modèles copiés dans la nouvelle application. Vous l'application existante ne serait pas affecté.

J'ai créé commande la gestion générer un un appareil sur une base par modèle. Les luminaires à tubes peuvent être générés en exécutant:

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

Code à: https://gist.github.com/2394883

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top