Puis-je effectuer un dumpdata
dans Django sur un seul modèle, plutôt que sur toute l'application, et si oui, comment?
Pour une application, ce serait:
python manage.py dumpdata myapp
Cependant, je veux qu'un modèle spécifique, tel que "myapp.mymodel" soit vidé. La raison en est que j'ai d'énormes, 3 millions d'enregistrements plus, des ensembles de données dans la même application que je n'aimerais pas vider.
Réponses:
À partir de la version 1.1 et supérieure, la
dumpdata
commande de gestion Django vous permet de vider les données de tables individuelles:Vous pouvez également séparer plusieurs applications et modèles sur la ligne de commande. Voici la définition canonique:
la source
--indent 4
aprèsdumpdata
Comme indiqué, vous ne pouvez pas le faire via 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
:la source
Prenez toutes les données au format json à partir du modèle django.
Syntaxe:
Par exemple, vider les données du modèle group_permission qui résident dans l'application d'authentification par défaut dans django.
Pour la sortie, jetez un œil sur la console .
la source
Je pense que vous aviez la solution dans votre question. Vous pouvez vider un modèle individuel comme ceci:
la source
Pour réussir, j'ai dû le dire deux fois, et spécifier le modèle deux fois, comme:
Si seulement je disais
J'ai été inondé de tous les modèles de myapp2, malgré le fait que j'ai spécifié my_model.
la source
Pour contourner ce problème, vous pouvez créer une autre application et copier le modèle, mais le pointer vers la table existante avec l'option méta db_table. Ensuite, vous pouvez simplement vider les modèles que vous avez copiés dans la nouvelle application. Votre application existante ne serait pas affectée.
la source
J'ai créé une commande de gestion pour générer un appareil par modèle. Les projecteurs peuvent être générés en exécutant:
code sur: https://gist.github.com/2394883
la source
Pour l'écrire sur un fichier spécifique:
la source