2009-07-11 8 views
99

Posso eseguire un dumpdata in Django su un solo modello, piuttosto che sull'intera app, e se sì, come?Dati di dumping Django per un singolo modello?

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 è che ho alcuni enormi record di oltre 3 milioni di record nella stessa app che non mi piacerebbe scaricare.

+0

Trovo che la tua domanda non sia facile da capire. Vuoi caricare un dump SQL nel tuo database?O vuoi fare una sorta di toString() su e istanza di un modello? –

risposta

179

A partire dalla versione 1.1 e superiore, il comando gestione Django dumpdata permette di salvare i dati da singole tabelle:

./manage.py dumpdata myapp1 myapp2.my_model 

si può anche separati applicazioni multiple e modelli sulla riga di comando. Ecco la definizione canonica:

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

django 1.3 ./manage.py dumpdata myapp.mymodel – gath

+14

gath, non ha capito il voto negativo sul post che ha quasi 2 anni. Inoltre il codice sopra funzionava bene anche con la v1.1. Le nuove funzionalità nelle nuove versioni non invalidano le risposte precedenti. – simplyharsh

+0

E come posso aggiungere questi dati a un'altra istanza dell'app ?. – aguilarpgc

5

Penso che tu avessi la soluzione nella tua domanda. È possibile scaricare un modello di individuo come questo: si

./manage.py dumpdata myapp.my_model 
+0

l'ho provato prima di postare. non ha avuto fortuna Sono in django 1.0. ha provato anche myapp.models.mymodel? – nategood

+0

è necessario utilizzare il trunk affinché funzioni. – priestc

1

Per aggirare il problema si potrebbe fare un'altra applicazione e copiare il modello, ma puntarlo alla tabella esistente con l'opzione meta db_table. Quindi puoi semplicemente scaricare i modelli che hai copiato nella nuova app. La tua app esistente non ne risentirebbe.

86

Come indicato, non è possibile farlo tramite 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() 
+4

Questo è un grande script perché puoi diventare ancora più dettagliato se lo desideri. Se invece fai un .filter (...) sulla riga tre sopra puoi scaricare solo i record specifici che desideri. –

+1

Bello! Controllo decisamente migliore in questo modo. –

0

Ho creato una gestione il comando generano un appuntamento fisso in base al modello. Fixtures possono essere generati da corsa:

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

codice a: https://gist.github.com/2394883

3

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 io solo detto

./manage.py dumpdata myapp2 myapp2.my_model 

Sono stato inondato con tutti i modelli in myapp2, nonostante abbia specificato my_model.

2

Prendere tutti i dati in formato json dal modello django.

Sintassi:

python manage.py dumpdata app_name.model_name 

Per esempio dati di dumping da modello group_permission che risiedono in difetto di autenticazione applicazione in Django.

python manage.py dumpdata auth.group_permission 

Per l'uscita un'occhiata su console.

Problemi correlati