2014-11-03 93 views
10

我想從Django 1.6.7升級到Django 1.7.1,所以我一直在嘗試遷移我的應用程序。Django 1.7 - 應用程序'your_app_name'沒有遷移

我按照django docs here

我從已安裝的應用程序中刪除了南部。

在遷移目錄中,我刪除了編號的遷移文件和.pyc文件,但保留了目錄& __ init__.py文件。

我然後運行:

python manage.py makemigrations your_app_name 

我收到以下確認消息:

Migrations for 'your_app_name': 
    0001_initial.py: 
    - Create model UserProfile 

接着我運行:

python manage.py migrate your_app_name 

我收到以下錯誤:

CommandError: App 'your_app_name' does not have migrations (you cannot selectively sync unmigrated apps) 

按的文檔,我也跑:

python manage.py migrate --fake your_app_name 

我收到了同樣的錯誤消息:

CommandError: App 'your_app_name' does not have migrations (you cannot selectively sync unmigrated apps) 

任何人都能夠解釋爲什麼這將不適合我一些啓示?

+0

'makemigrations'是否在你的'migrations'文件夾中創建了一個新文件? – ChillarAnand 2014-11-03 12:01:17

+0

是的。新文件被稱爲0001_initial – user1261774 2014-11-03 17:15:43

回答

8

如果你有一個單一的應用程序,而無需指定應用程序或遷移可能工作運行migrate

如果是這樣,首先要檢查的是您的應用程序名稱與INSTALLED_APPS下settings.py中指定的名稱匹配。

正如評論中指出的那樣,應用程序名稱可以採用[parent_app]。[app_name]的形式。在這種情況下,遷移僅需要[app_name]。

+4

這個第二部分可能會讓這裏的用戶感到困惑,因爲安裝的應用程序名稱可能是'[parent_app]。[app_name]',而migrate.py命令只需要[app_name]。令人困惑的是,這可能會導致與原始海報相同的錯誤。 – Jmills 2015-01-16 17:23:17

+0

它爲我工作。 – vanguard69 2015-06-14 08:18:17

+1

謝謝@TheCardCheat!我正在使用'parent_app.app_name'並且無處可去。 – annapetry 2016-02-07 02:34:34

0

剛剛提到另外一個可能的原因:

在我的Django應用程序我添加了正確的遷移和安裝了PIP的應用程序,並得到了同樣的錯誤。

我缺少的是一個正確的MANIFEST.in文件 另外setup.py文件的setup()中的參數include_package_data未設置爲True

0

我注意到只有那些實際上包含migrations文件夾的應用程序包含文件__init__.py才能被遷移所識別。 IE只有models.py在你的應用程序是不夠的。