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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top