Frage

Kann ich führe eine dumpdata in Django auf nur ein einziges Modell, anstatt die ganze app, und wenn ja, wie?

Für eine App wäre es:

python manage.py dumpdata myapp

Allerdings möchte ich einige spezifische Modell, wie „myapp.mymodel“ abgeschoben werden. Der Grund dafür ist, ich habe einige große, 3 Millionen Datensätze plus, Datensätze in der gleichen App, die ich nicht abgeladen mag.

War es hilfreich?

Lösung

Ab Version 1.1 und höher, die Django dumpdata Management-Befehl können Sie Daten aus einzelnen Tabellen-Dump:

./manage.py dumpdata myapp1 myapp2.my_model

Sie können auch mehrere Anwendungen und Modelle auf der Kommandozeile trennen. Hier ist die kanonische Definition:

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

Andere Tipps

Wie bereits erwähnt, können Sie dies durch einen manage.py Befehl in Django 1.0 nicht. Allerdings könnten Sie ein Skript verwenden, um die JSON-Datei zu exportieren, und laden Sie es loaddata mit:

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()

Ich denke, dass Sie die Lösung in Ihrer Frage haben. Sie können ein einzelnes Modell wie folgt Dump:

./manage.py dumpdata myapp.my_model

Nehmen Sie alle Daten in json-Format von django Modell.

Syntax:

python manage.py dumpdata app_name.model_name

Beispiel: Dumping Daten aus group_permission Modell, das in django in Standard-Auth App befindet.

python manage.py dumpdata auth.group_permission

Für die Ausgabe einen Blick auf console .

Für den Erfolg hatte ich es zweimal zu sagen, und geben Sie das Modell zweimal, wie:

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

Wenn ich nur gesagt,

./manage.py dumpdata myapp2 myapp2.my_model

habe ich mit allen Modellen in myapp2 überflutet, trotz der Tatsache, dass ich angegeben my_model.

Als Abhilfe können Sie eine andere App machen könnte und das Modell kopieren, sondern es an die vorhandene Tabelle mit der db_table Meta-Option zeigen. Dann könnten Sie nur die Modelle werfen Sie in die neue App kopiert. Sie bestehende App nicht betroffen.

Ich habe ein Management erstellt die eine Befestigung auf Modellbasis generiert Befehl. Befestigungen können durch Laufen erzeugt werden:

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

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top