2009-05-20 7 views
33

Ich möchte den Äquivalent von manage.py loaddata aus einer Django-Ansicht aufrufen. Ich möchte in der Lage sein, anzugeben, wo die Daten von und in welche Anwendung geladen werden sollen.Programmgesteuert mit Djangos Ladedaten

Irgendwelche Ideen?

Antwort

53

Jeder django-admin.py (manage.py) Befehl, wie in der documentation gesehen, können Sie aus dem Code aufrufen mit:

from django.core.management import call_command 

call_command('loaddata', 'myapp') 

Wo ersten param den Befehlsnamen, alle anderen Position params sind die gleichen wie Befehlszeile Positionsparameter und alle Schlüsselwortparameter sind Optionen.

+2

Sie können auch Option "Ausführlichkeit = 0" für die Unterdrückung Konsole Ausgabe hinzufügen: call_command ('loaddata', 'fixture_name.json', Ausführlichkeit = 0) –

+0

Docs hier: https://docs.djangoproject.com/en/ 1.8/ref/django-admin/# running-management-commands-from-your-code – Renato

+0

Bitte beachten Sie, dass ** es nicht geeignet ist, den 'loaddata' Befehl direkt in einer Datenmigration ** zu verwenden, da dieser intern am meisten lädt aktuelle Modelldefinitionen und verwendet diese, um historische Daten in einem Fixture zu deserialisieren. Das ist falsches Verhalten. Lösung hier: http://StackOverflow.com/a/39743581/2293304 – Rockallite

Verwandte Themen