Frage

Um meine Modelle in Unterordner zu platzieren ich versuchte, das app_label Meta-Feld zu verwenden, wie beschrieben hier .

Meine Verzeichnisstruktur sieht wie folgt aus:

  • Projekt
    • Anwendungen
      • foo
        • Modelle
          • __ init __. Py
          • bar_model.py

In bar_model.py definiere ich mein Modell wie folgt aus:

from django.db import models

class SomeModel(models.Model):

    field = models.TextField()

    class Meta:
        app_label = "foo"

Ich kann erfolgreich das Modell importiert wie folgt:

from apps.foo.models.bar_model import SomeModel

Allerdings läuft:

./manage.py syncdb

die Tabelle nicht für das Modell erstellen. Im ausführlichen Modus ich aber sehen, dass die App „foo“ richtig erkannt (es ist in INSTALLED_APPS in settings.py). Bewegen des Modells models.py unter foo funktioniert.

Gibt es eine spezifische Konvention nicht mit app_label dokumentiert oder mit dem ganzen Mechanismus, der verhindert, dass diese Modellstruktur aus durch syncdb erkannt zu werden?

War es hilfreich?

Lösung

Siehe Django Ticket # 10985: Erklären Sie, wie Modelle können in einem Verzeichnis organisiert werden

Es kann sein, dass Sie Ihre Modelle in __init__.py nicht importieren?

Andere Tipps

syncdb werden keine Tabellen für Modelle erstellen nicht in <appname>.models befindet, so importieren Sie es in dort, z.B. from apps.foo.models import SomeModel.

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