Modell in dem Unterverzeichnis über app_label?
-
21-09-2019 - |
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
- Modelle
- foo
- Anwendungen
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?
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
.