2015-05-04 31 views
0

我有一個項目有幾個應用程序和許多數據模型。我正在使用Django 1.7和Python 2.7。Django 1.7沒有找到新的模型w/makemigrations

我已將模型組織到應用程序級模塊中。

- common/ 
    -- models/ 
    --- __init__.py 
    --- these_models.py 
    --- those_models.py 

我已經在這個結構中增加一個新的文件和Django的makemigration命令未檢測到的變化。

如果我將新模型放入現有模型文件中,遷移文件將完美創建,那麼所有內容都將遷移並運行良好。一旦我把它們放入一個新的文件Django沒有找到它們。它們不在新的應用程序中 - 它是現有的app/models/模塊,只是一個新文件。我不import *(ewwww)在__init__.py或任何東西。

在Django 1.4中,我必須使用Metaapp_label,但不要再這樣做。

有什麼想法?我需要手動創建遷移文件嗎(我這樣做沒問題)?

+0

http://stackoverflow.com/questions/5534206/how-do-i-separate-my-models-out-in-django – Othman

+0

這與我的問題無關,因爲我使用的是Django 1.7。另外,我在我的問題中提到這並不相關。你讀過我的問題了嗎? – Rico

+0

您應該將模型導入'models'內的'__init __。py'中。沒有人告訴你使用'*'。 – snahor

回答

4

Django的不支持,現在在子文件夾模式,而無需指定Meta classapp_label但它仍然是蟒蛇,不會神奇地加載在models文件夾中的所有模塊。

您仍然需要將您的模型導入app/models/__init__.py

+0

這是不正確的。我的項目有大約8個模型模塊,其中有大約2個模型文件。沒有一個是在'app/models/__ init __。py'中導入的。我們只是將所有模型引用爲'from app.models.these_models import SomeModel'。 Django似乎很好地處理了這個範例。 (除了這個用例) – Rico

+2

@Rico在這種情況下,你是「幸運」的事實是有這些模型的進口。如果有一段時間,其中一個文件中的模型沒有被django自動導入的模塊導入,那麼'makemigrations'將無法看到模型並將其刪除。聽起來有點危險!這也是爲什麼你的新模型沒有被makemigrations拾起的問題。沒有什麼是導入它們。這是一個沒有人會期望的依賴關係(刪除導入不應導致應用程序工作方式的巨大變化),並且我建議在'__init __。py'中導入,django希望在其中找到它們 –