Ответ 1
См. Django ticket # 10985: Объясните, как модели могут быть организованы в каталог
Возможно, вы не импортируете свои модели в __init__.py
?
Чтобы разместить мои модели в подпапках, я попытался использовать мета-поле app_label, как описано здесь.
Моя структура каталогов выглядит так:
В bar_model.py я определяю свою модель следующим образом:
from django.db import models
class SomeModel(models.Model):
field = models.TextField()
class Meta:
app_label = "foo"
Я могу успешно импортировать модель следующим образом:
from apps.foo.models.bar_model import SomeModel
Однако запуск:
./manage.py syncdb
не создает таблицу для модели. Однако в подробном режиме я вижу, что приложение "foo" правильно распознано (оно находится в INSTALLED_APPS в settings.py). Перемещение модели на models.py под foo действительно работает.
Существует ли какое-то конкретное соглашение, не документированное с помощью app_label или со всем механизмом, который предотвращает распознавание этой структуры модели с помощью syncdb?
См. Django ticket # 10985: Объясните, как модели могут быть организованы в каталог
Возможно, вы не импортируете свои модели в __init__.py
?
syncdb
не будет создавать таблицы для моделей, не расположенных в <appname>.models
, поэтому импортируйте их там, например. from apps.foo.models import SomeModel
.