2017-04-12 99 views
2

我在運行Django 1.10.6的Ubuntu機器上安裝Django應用程序時出現嚴重問題。Django 1.10 makemigrations錯誤

我習慣於使用舊版本的Django,現在我無法安裝我的webapp。這裏的情況:

我有一個名爲myproject的Django項目。文件結構是:

(BASEDIR)/manage.py 
(BASEDIR)/mycommon/ # I will discuss mycommon below 
(BASEDIR)/myproject/ 
(BASEDIR)/myproject/settings.py 
(BASEDIR)/myproject/urls.py 
(BASEDIR)/myproject/views.py 
(BASEDIR)/myproject/wsgi.py 
(BASEDIR)/myproject/models/ 
(BASEDIR)/myproject/models/__init__.py 
(BASEDIR)/myproject/models/models.py 

事實證明,這個項目我需要把我的模型在一個共同的包,因爲還有另外一個Python應用程序(使用雙絞線是自舉的Django)需要訪問這些模型。我將把這個包叫做「mycommon」。所以,我的 「真實」 的車型在這裏:

(BASEDIR)/mycommon/ 
(BASEDIR)/mycommon/utils.py 
(BASEDIR)/mycommon/models/ 
(BASEDIR)/mycommon/models/__init__.py 
(BASEDIR)/mycommon/models/models.py 

所以Django的設置文件是在(BASEDIR)/myproject/settings.py和INSTALLED_APPS參數設置爲這樣:

INSTALLED_APPS = (
'myproject.models', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'django.contrib.admin', 
) 

最後,注意,MyProject的/模型/ models.py很簡單,因爲它只是使用了mycommon型號:

from django.db import models 
from mycommon.models.models import * 

到目前爲止好,這是在較舊版本的Django精細的結構。無論如何,我開始用空MYSQL數據庫(創建,但空的),現在我回去(BASEDIR)並運行此:

python manage.py makemigrations mycommon.models 

不幸的是,我得到這樣的錯誤:

RuntimeError: Model class mycommon.models.models.SomeModel doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS. 

所以我究竟做錯了什麼?

回答

0

INSTALLED_APPS你應該只有'myproject',沒有'.models'

但是由於您使用的是Django 1.10,如果您通過manage.py startapp mycommon創建mycommon應用程序,它會更乾淨。這會創建一些文件,但是您應該將模型移動到mycommon/models.py。請注意0​​。您不必觸摸此文件,只需將其包含在INSTALLED_APPS列表中:'mycommon.apps.MycommonConfig'。這樣,遷移框架將自動發現您的模型。

最後,刪除myproject/models,因爲myproject保存項目配置。

相關問題