Wie verwende ich Django Orm in einem Nicht-Django-Projekt?Python

Python-Programme
Anonymous
 Wie verwende ich Django Orm in einem Nicht-Django-Projekt?

Post by Anonymous »

Ich habe ein Projekt mit der folgenden Struktur:

Code: Select all

.
├── app
│   ├── data
│   │   ├── ...
│   │   └── orm
│   │       ├── app_1
│   │       ├── app_2
│   │       ├── ...
│   │       └── orm
│   │           ├── ...
│   │           └── settings.py
│   └── ...
├── ...
└── main.py
Ich möchte Django ORM in meinem Projekt verwenden, möchte aber eine einfache Möglichkeit haben, Django ORM in jedes andere ORM zu ändern. Dementsprechend möchte ich das Django-Projekt in meinem Hauptprojekt isolieren.

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()
Auch wenn ich diesen Code irgendwo anders einfüge, zum Beispiel in main.py, funktioniert das nicht, Django sagt ImproperlyConfigured: Requested Setting INSTALLED_APPS.

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 ()
liegt irgendwo in der Mitte des Projekts, ich musste es bearbeiten

Code: Select all

manage.py
also os.environ.setdefault ('DJANGO_SETTINGS_MODULE', 'app.data.orm.orm.settings').

Gibt es welche Gibt es eine schönere Möglichkeit, ein Projekt zu organisieren, bei dem Sie Django ORM eines Drittanbieters verwenden müssen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post