2017-04-12 72 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保存项目配置。