Code: Select all
.
├── app
│ ├── data
│ │ ├── ...
│ │ └── orm
│ │ ├── app_1
│ │ ├── app_2
│ │ ├── ...
│ │ └── orm
│ │ ├── ...
│ │ └── settings.py
│ └── ...
├── ...
└── main.py
Ich habe einige Klassen app.data...DataController, die in jedem Fall Modelle verwenden. Und Code in main.py verwendet DataController, um Daten aus der Datenbank abzurufen oder zu laden. Anderer Code funktioniert bereits mit Daten, aber nicht direkt mit Modellen.
Um dies zu erreichen, habe ich diesen Code in app.data.__init__.py geschrieben:
Code: Select all
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app.data.orm.orm.settings")
import django
from django.conf import settings
django.setup()
Und dann habe ich in „settings.py“ gepunktete Pfade in Apps wie „app_1“ geändert -> 'app.data.orm.app_1'. Aber im Moment kann ich keine Django-Befehle von manage.py verwenden, weder vom Projektstammverzeichnis noch von app/data/orm. Erstens ist das Stammverzeichnis des Projekts nicht in sys.path enthalten. Zweitens erhalte ich, wenn ich es hinzufüge, die Ausnahme „RuntimeError: populate() isn't reentrant“.
Gibt es eine Möglichkeit, das zu machen, was ich will oder was mir fehlt?
upd.
Ok, ich habe dafür gesorgt, dass es funktioniert, wie ich es am Anfang beschrieben habe, aber es sieht schrecklich aus – ich habe manage.py in das Projektstammverzeichnis verschoben, den Code mit
Code: Select all
django.setup ()
Code: Select all
manage.py
Gibt es welche Gibt es eine schönere Möglichkeit, ein Projekt zu organisieren, bei dem Sie Django ORM eines Drittanbieters verwenden müssen?