2013-09-28 2 views
2

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

my_model/ 
├── __init__.py 
├── models/ 
    ├── __init__.py 
    ├── my_model.py 
    ├── my_other_model.py 

my_model.py и my_other_model.py каждый из которых содержит модель, MyModel и MyOtherModel, и в моем настройки Django файла я добавил эту папку в моем списке установленных приложений, как это:

INSTALLED_APPS = (
    ... 
    'my_model', 
    ... 
) 

Теперь, когда я бегу SyncDB на моем проекте я ожидаю, обе модели, чтобы создать таблицу MySQL, но MyModel единственная таблица, созданная в mymodel_mymodel , Я не знаю, как заставить syncdb создать другую модель, хотя я ожидаю получить другую таблицу с именем mymodel_myothermodel.

Спасибо за вашу помощь, Маттиас

ответ

2

django<=1.6 В, you must define app_label in your model's Meta для него, чтобы быть подобран SyncDB, если он не живет в models.py

Обратите внимание, что вы, вероятно, работает django<=1.6, так как 1.7 ISN Еще нет.


Для syncdb чтобы найти модели, вы, вероятно, также придется импортировать их в models/__init__.py.

+0

Я добавил app_label = 'my_model' в класс Meta класса, но когда я пытаюсь импортировать модели из __init__, я получаю ошибку импорта при импорте my_other_model, потому что тот пытается импортировать my_model со следующей ошибкой: import my_model .models. my_other_model, AttributeError: объект 'module' не имеет атрибутов 'models' –

+1

@materik У вас может быть проблема с круговой импорцией. [Использование строки] (https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey) в ForeignKey (или любых других отношениях), которые, возможно, вам придется исправить проблема. –

+0

спасибо, это сработало :) –

Смежные вопросы