Sagen wir, ich habe zwei Django-Apps:
In der Wettkampf-App habe ich ein Modell, das einen Abschnitt eines Wettbewerbs darstellt:
%Vor%Ich möchte das Entry-Modell in die App eintragen:
%Vor% Wie löse ich die Anweisungen von ... Import ..., damit sie funktionieren? Wenn ich import-Anweisungen wie from entries.models import Entry
einfüge, bekomme ich die Modelle aus diesen Apps von syncdb ignoriert (weil die Importe zirkulär sind) oder wenn ich eine oder beide lösche, bekomme ich Validierungsfehler:
Fehler: Ein oder mehrere Modelle nicht validiere: entries.entry: 'division' hat eine Beziehung mit der Modellabteilung, welches entweder nicht installiert wurde oder ist abstrakt. wettbewerbe.division: "Teilnehmer" gibt eine m2m an Beziehung durch Modelleintrag, die wurde nicht installiert
Ich verstehe, warum das passiert, aber ich habe keine Ahnung, wie ich das ändern soll, damit es funktioniert (ohne das Entry-Modell in die Gewinnspiel-App zu verschieben, was ich wirklich nicht tun möchte).
>Es scheint als hätte ich eine Antwort gefunden, die konsequenter funktioniert:)
Die Django-Dokumentation zur ForeignKey-Klasse lautet:
%Vor%Um auf Modelle zu verweisen, die in einem anderen definiert sind Anwendung können Sie explizit Geben Sie ein Modell mit dem vollständigen Namen an Anwendungskennzeichnung. Zum Beispiel, wenn der Das obige Herstellermodell ist in definiert eine andere Anwendung namens Produktion, Sie müssten verwenden:
Diese Art von Referenz kann nützlich sein beim Auflösen des zirkulären Imports Abhängigkeiten zwischen zwei Anwendungen.
manchmal hilft django.db.models.get_model
, zirkuläre Importe zu umgehen. Versuchen Sie in Ihrem Beispiel, Entry
normal zu importieren und ändern Sie die division
FK-Definition in Entry
folgendermaßen:
Tags und Links python django django-models django-apps manytomanyfield