Frage

Meine zweite nicht so geschickt Frage des Tages: Ich habe ein django Projekt mit vier installierten Anwendungen. Als ich manage.py syndb laufen, schafft es nur Tische für zwei von ihnen. Mein Wissen gibt es keine Probleme in keinen meiner Modellen Dateien und alle Anwendungen sind in INSTALLED_APPS in meiner Einstellungsdatei angegeben. Manage.py syndb scheint nur zwei meiner apps zu ignorieren.

Eine Sache, die über die beiden „ignoriert“ Apps einzigartig ist, ist, dass die Modelle Dateien Modelle von den beiden anderen Anwendungen importieren und sie als Fremdschlüssel (weiß nicht, ob dies eine gute / schlechte Praxis, sondern hilft mir zu bleiben organisiert). Ich glaube nicht, das ist das Problem aber, weil ich die Fremdschlüssel-Modelle mit Kommentaren und die Tabellen wurden noch nicht erstellt. Ich bin ratlos.

UPDATE: Wenn ich die Zeilen importieren Modelle Dateien von anderen Anwendungen aus kommentieren syndb schafft meine Tabellen. Vielleicht bin ich zu verstehen, nicht etwas darüber, wie Modelle Dateien in separaten Anwendungen auf andere anderen beziehen. Ich dachte, es war in Ordnung, indem man einfach den Import es ein Modell aus einer anderen Anwendung als Fremdschlüssel zu verwenden. Nicht wahr?

War es hilfreich?

Lösung

Leider versagt manage.py leise eine App zu laden, wo in seiner models.py ein Importfehler gibt es ( Ticket # 10706 ). Die Chancen stehen gut, dass es einen Tippfehler in einem Ihrer models.py Dateien ... lassen Sie die Import-Anweisungen genau (oder Pylint verwenden).

Vor kurzem syncdb stoped ein paar meiner apps Laden und sqlall gab mir den Fehler „App mit Etikett foo konnte nicht gefunden werden“. Nicht wissend, dass dies manchmal bedeutet „App mit Etikett foo gefunden wurde, aber nicht wegen Import angehoben wird geladen werden kann“, es dauerte eine halbe Stunde zu erkennen, dass ich versuche, ‚haslib‘ anstelle von ‚hashlib‘ zu importieren in eines der meine models.py Dateien.

Andere Tipps

Ich glaube, ich lief über etwas ähnliches.

hatte ich ein Problem, bei dem ein Modell nicht zurückgesetzt zu werden wurde. In diesem Fall stellte sich heraus, dass ein Fehler in meinen Modellen war das nicht ausspucken wurde.

Obwohl ich glaube, syncdb, wenn laufen, spucken irgendeine Art von Fehler aus.

In jedem Fall versuchen, Ihre Modell Datei aus dem Shell zu importieren und sehen, wenn Sie können.

$ manage.py shell
>>> from myapp import models
>>>

Wenn ein Fehler in der Datei Theres dies sollte es weisen.

Nach Ihrer Update, es klingt wie Sie ein Cross-Import Problem haben. Statt:

from app1.models import X

class ModelA(models.Model):
    fk = models.ForeignKey(X)

Versuchen:

class ModelA(models.Model):
    fk = models.ForeignKey("app1.X")

... obwohl ich glaube, Sie sollten einen Fehler auf syncdb erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top