使用makemigrations命令嘗試創建遷移的現有應用程序,但它顯示「未檢測到更改」。Django 1.9 - makemigrations - 未檢測到更改
通常我使用startapp
命令創建新的應用程序,但這個特定的應用程序不是。
經過一段時間的調試,我發現它沒有創建遷移,因爲應用程序缺少migrations
程序包/文件夾。
會更好它創建文件夾,如果它不存在或者也許我失去了一些東西
使用makemigrations命令嘗試創建遷移的現有應用程序,但它顯示「未檢測到更改」。Django 1.9 - makemigrations - 未檢測到更改
通常我使用startapp
命令創建新的應用程序,但這個特定的應用程序不是。
經過一段時間的調試,我發現它沒有創建遷移,因爲應用程序缺少migrations
程序包/文件夾。
會更好它創建文件夾,如果它不存在或者也許我失去了一些東西
要爲應用程序創建初始遷移,運行makemigrations
並指定應用程序的名稱。遷移文件夾將被創建。
./manage.py makemigrations <myapp>
您的應用必須首先包含在INSTALLED_APPS
之內。
有時候./manage.py makemigrations
優於./manage.py makemigrations <myapp>
,因爲它可以處理應用程序之間的某些衝突。
這些場合默默無聞地發生,需要花費幾小時的時間才能瞭解可怕的No changes detected
消息的實際含義。
因此,它是一個更好的選擇,使用以下命令:
./manage.py makemigrations <myapp1> <myapp2> ... <myappN>
我讀過許多這個問題的答案往往說明簡單地運行在其他一些方面makemigrations
。但對我而言,問題在於模型的Meta
子類。
我有一個應用程序配置,說label = <app name>
(在apps.py
文件中,旁邊models.py
,views.py
等)。如果有機會(例如因爲你將一個太大的應用程序拆分爲多個應用程序),你的元類沒有相同的標籤,沒有檢測到更改(並且沒有任何有用的錯誤消息)。所以在我的模型類中,我現在有:
class ModelClassName(models.Model):
class Meta:
app_label = '<app name>' # <-- this label was wrong before.
field_name = models.FloatField()
...
在這裏運行Django 1.10。
這是一個評論,但應該可能是一個答案。
確保您的應用名稱位於settings.py INSTALLED_APPS
否則無論您做什麼,它都不會運行遷移。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
]
然後運行:
./manage.py makemigrations blog
我的問題(等溶液)還從與上述不同。
我沒有使用models.py
文件,但創建了一個models
目錄,並在那裏創建了my_model.py
文件,我放置了我的模型。 Django無法找到我的模型,因此它寫道沒有適用的遷移。
我的解決辦法是:在my_app/models/__init__.py
文件中添加此行: from .my_model import MyModel
我有同樣的問題:) Thx –
你有你的應用添加到INSTALLED_APPS? – wolendranh
是的,它是在安裝的應用程序,第一次,更好地使用'makemigrations'作爲阿拉斯代爾指出。 –
Dilraj
刪除'abstract = True':) – GrvTyagi