Модель в подкаталоге через app_label? - PullRequest
15 голосов
/ 19 марта 2010

Чтобы разместить свои модели в подпапках, я попытался использовать метаполе app_label, как описано здесь .

Моя структура каталогов выглядит так:

  • проект
    • приложение
      • Foo
        • модель
          • __ __ INIT. Ру
          • bar_model.py

В 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?

Ответы [ 2 ]

21 голосов
/ 20 марта 2010

См. Билет Джанго # 10985: Объясните, как модели могут быть организованы в каталоге

Возможно, вы не импортируете свои модели в __init__.py?

3 голосов
/ 19 марта 2010

syncdb не создаст таблицы для моделей, не расположенных в <appname>.models, поэтому импортируйте их туда, например from apps.foo.models import SomeModel.

...