Holen Sie sich eine Liste aller installierten Anwendungen in Django und Ihre Attribute
In meinem Django-website, ich bin die Schaffung einer Klasse, die miteinander interagieren dynamisch mit anderen Anwendungen installiert ist, die in die website. Ich habe zu tun, eine manipulation auf jedem Feld jede Anwendung.
So, ich möchte speichern Sie die Namen aller installierten Anwendungen in einer Liste und rufen Sie die Attribute der einzelnen ein. Es gibt einen Weg, das zu tun, mit einem iterator oder etwas anderes ?
- Von
manage.py
CLI: stackoverflow.com/questions/21566919/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unter Django 1.7 und höher (Dank Colin Anderson):
Unter Django 1.6 und unten.
Wenn Sie möchten, dass alle Modelle, versuchen:
Glaube ich, dass die ältere Funktion noch funktioniert.
apps.app_configs.keys()
. Dies ergibt eine Liste von app-Bezeichnungen. Es macht das gleiche wie @caio Antwort unten, ist aber ein wenig direkter.apps.app_configs
liefert ein dictionary mit den app-labels als Schlüssel.[Bearbeiten]
Also der gesegnete Weg ist:
Ältere version dieser Antwort:
Alle Anwendungen sind eingetragen in der
settings.py
Datei.Können Sie importieren jede Anwendung und die Liste Ihrer Attribute:
Um die neue print-Funktion statt der print-Anweisung in älteren Python, müssen Sie möglicherweise ein Problem
from __future__ import print_function
(oder ändern Sie einfach die Zeile mit derprint
nennen).In der Liste der installierten Anwendungen definiert ist, in
settings.INSTALLED_APPS
. Es enthält ein Tupel von strings, so können Sie beurteilen Sie den Zugriff auf jede Anwendung den Namen.Allerdings bin ich mir nicht sicher, was du meinst, die von jeder Anwendung Attribute und Felder.
CharField
undTextField
"Attribute". Sprechen Sie über die Anwendung von Modellen oder die Antragsformulare?Können Sie abrufen, apps installiert, wie das (Dolmetscher) :
Wird die tatsächliche apps sich (nicht nur Namen), dies ist, was ich kam mit:
Obwohl möchten Sie vielleicht, um einige der Fehlerbehandlung, oder filtern.
Getestet mit Django 1.9:
Aktualisieren Sie Ihre Einstellungen, um diese test-runner.
Läuft dieser mit --keepdb ist wirklich schnell.
Funktioniert auf Django 1.11+ (ich arbeite auf Django 2.2)