django Modelle rekursive Importe - wie zu lösen

7

Ich habe ein Modell project_phase :

%Vor%

es verweist auf pmo_review_task (weil es eine pmo_review_task in seinem Save Overwrite erstellt)

%Vor%

welche Referenzen sc_review_task die auf project_phase verweisen (weil es in seinem Save Overwrite eine project_phase erzeugt)

%Vor%

es endet also project_phase importiert pmo_review_task importiert sc_review_task importiert project_phase und ich schätze, dass es sich irgendwie anhäuft Dieser Fehler:

%Vor%

Wie überwinde ich das?

    
abolotnov 17.02.2012, 07:36
quelle

3 Antworten

17

Zwei Möglichkeiten:

  1. Importieren eines Modells in eine Methode (wie von @YujiTomita vorgeschlagen).
  2. Um get_model function von django.db.models zu verwenden, das für faule Modellimporte entwickelt wurde.:

    %Vor%

Ich bevorzuge die zweite, aber beide Methoden sind in Ordnung.

    
DrTyrsa 17.02.2012, 07:49
quelle
6

importiere project_phase in die save Methode.

Der Import wird immer dann aufgerufen, wenn der Code ausgeführt wird.

Wenn es sich im globalen Modul-Namespace (oben) befindet, wird es sofort aufgerufen, und Sie haben zirkuläre Importprobleme, weil Sie eine Datei importieren, die die ursprüngliche Datei importiert.

Wenn Sie die Import-Anweisung in eine Funktion einfügen, wird sie beim Importieren der Datei / nicht aufgerufen.

%Vor%     
Yuji 'Tomita' Tomita 17.02.2012 07:38
quelle
0

Django 1.9 und höher

As get_model() in django.db.models wurde in 1.9 entfernt.

Verwenden Sie django.apps.get_model()

Ähnliche Frage:   Was ist? das Äquivalent von django.db.models.loading.get_model () in Django 1.9?

oder verwenden Sie das Anführungszeichen in Anführungszeichen, wenn Sie es nur zum Erstellen eines Fremdschlüssels verwenden.

Anstelle von from core.models import project_phase tue

%Vor%     
Nagashayan 14.03.2018 17:53
quelle