Django dump dei dati per un unico modello?
-
12-09-2019 - |
Domanda
È possibile eseguire un dumpdata
in Django solo su un unico modello, piuttosto che l'intera applicazione, e se sì, come?
Per un app sarebbe:
python manage.py dumpdata myapp
Tuttavia, voglio un po 'modello specifico, come ad esempio "myapp.mymodel" per essere scaricato. Il motivo è, ho alcuni enormi, 3 milioni di dischi, più set di dati, nella stessa app che non vorrei dumping.
Soluzione
A partire dalla versione 1.1 e superiore, il Django dumpdata
comando di gestione consente di salvare i dati da singole tabelle:
./manage.py dumpdata myapp1 myapp2.my_model
È anche possibile separare più applicazioni e modelli sulla riga di comando. Ecco la definizione canonica:
django-admin dumpdata [app_label[.ModelName] [app_label[.ModelName] ...]]
Altri suggerimenti
Come notato, non si può fare questo attraverso un comando manage.py in Django 1.0. Tuttavia è possibile utilizzare uno script per esportare il file JSON, e caricarlo 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()
Credo che tu avessi la soluzione nella sua interrogazione. È possibile scaricare un modello di individuo in questo modo:
./manage.py dumpdata myapp.my_model
Prendere tutti i dati in formato JSON dal modello di Django.
Sintassi:
python manage.py dumpdata app_name.model_name
Esempio i dati di dumping da modello group_permission che risiedono in applicazione di autenticazione predefinito in Django.
python manage.py dumpdata auth.group_permission
Per l'uscita un'occhiata su console .
Per il successo ho dovuto dire due volte, e specificare il modello due volte, come:
./manage.py dumpdata myapp2.my_model myapp2.my_model
Se ho solo detto
./manage.py dumpdata myapp2 myapp2.my_model
Sono stato inondato con tutti i modelli di MyApp2, nonostante il fatto che ho specificato my_model.
Per risolvere il problema si potrebbe fare un'altra applicazione e copiare il modello, ma puntarlo alla tabella esistente con l'opzione meta db_table. Poi si può solo scaricare i modelli copiati nella nuova app. È un'applicazione esistente non sarebbero interessate.
Ho creato una gestione comando della generano un appuntamento fisso in base al modello. Fixtures possono essere generati da running:
./manage generate_fixtures app.model.MyModel --file=dump/MyModel.json
Codice a: https://gist.github.com/2394883