syncdb игнорирует импортированные модели - PullRequest
1 голос
/ 14 апреля 2011

У меня есть проект, структурированный так:

project/
   __init__.py
   db/
      models/
         __init__.py
         article.py
         project.py
         ontology/
            __init__.py
            coded.py

Он немного больше, но это идея.models.__init__.py содержит:

from db.models.article import *
from db.models.project import *
from db.models.ontology.coded import *

При запуске syncdb игнорируются все модели, импортированные в models.__init__.py.ImportError нет, и при добавлении оператора печати в __init__.py он успешно печатает импортируемые модели (при запуске syncdb).

Модели определены в __init__.py работать, хотя.

Почему это?Могу ли я заставить syncdb отвечать за мои импортированные модели?

Редактировать: Приложение равно в INSTALLED_APPS:

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'amcatnavigator.navigator',
'amcatnavigator.db',
)

Спасибо!

Ответы [ 3 ]

4 голосов
/ 14 апреля 2011

Вам нужно добавить app_label = 'db' к внутренним классам Meta ваших моделей.

3 голосов
/ 14 апреля 2011

Согласно документации South (syncdb): http://south.aeracode.org/docs/tutorial/part1.html Он будет создавать таблицы только для тех моделей, которые находятся в разделе INSTALLED_APPS в файле settings.py.Если модель используется, но она изменилась, и вы не хотите терять какие-либо данные - используйте миграции: http://south.aeracode.org/docs/tutorial/part1.html#the-first-migration

ОБНОВЛЕНИЕ: Насколько я выглядел, Django по дизайну не найдет модели в разных каталогах:http://code.djangoproject.com/ticket/14007 вы можете использовать app_label

ОБНОВЛЕНИЕ: app_label docs: http://docs.djangoproject.com/en/dev/ref/models/options/#app-label

0 голосов
/ 14 апреля 2011

Похоже, ваш модуль db не включен в список INSTALLED_APPS в ваших настройках.Недостаточно информации для других вариантов.

...