syncdb игнорирует импортированные модели

#python #django-models #django-syncdb

#python #django-models #django-syncdb

Вопрос:

У меня есть проект, структурированный следующим образом:

 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 , и при добавлении инструкции print к __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',
)
  

Спасибо!

Ответ №1:

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

Ответ №2:

Согласно документам 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 by design не найдет модели в разных каталогах: http://code.djangoproject.com/ticket/14007 возможно, вы захотите использовать app_label

ОБНОВЛЕНИЕ: документы app_label: http://docs.djangoproject.com/en/dev/ref/models/options/#app-label

Ответ №3:

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

Комментарии:

1. Я должен был упомянуть, что это в INSTALLED_APPS. Добавлено в исходное сообщение в 3 .. 2..