从Django 1.6.7升级到1.8.3,RuntimeError:应用程序中的冲突模型

时间:2015-07-23 06:02:55

标签: python django django-models upgrade django-1.8

我正在使用Django 1.8.3和Python 2.7.6

My project structure:
project/
   __init__.py
   app/
      __init__.py
      sa1/
         __init__.py
         admin.py
         models.py
         interface.py
      sa2/
         __init__.py
         forms.py
         urls.py
         views.py
      app/
         __init__.py
         admin.py
         models.py
         tests.py
         views.py

我尝试在sa2 / forms.py中导入模型,如下所示:

from project.app.sa2.models import Mo1, Mo2, Mo3

这引发了错误 -

Exception Type: RuntimeError at /
    Exception Value: Conflicting 'mo1' models in application 'app': <class
 'project.app.models.Mo1'> and <class 'app.models.Mo1'>

我尝试使用Django 1.7 conflicting models

解决问题

所以,我将其改为:

from app.sa2.models import Mo1, Mo2, Mo3

这引发了错误=&gt; ImportError: no module named sa2

所以,我在项目中删除了__init__.py采取了另一种方法/ https://code.djangoproject.com/ticket/22280

这引发了另一个错误=&gt; ImportError: No module named project.website.settings

请帮我调试一下。

2 个答案:

答案 0 :(得分:2)

我遇到了一些问题。在 sa2 内尝试

from sa2.models import Mo1, Mo2, Mo3 

或者

from .models import Mo1, Mo2, Mo3

CATCH :请务必在您的forms.py,tests.py或导入这些模型的其他地方使用相同的导入。如果只更新其中一个导入它将无法正常工作,您仍然会得到相同的错误。

由于双重导入而出现问题。有关详细信息,请参阅:The Double Import Trap

祝你好运

P.S。没有__init__.py在这个过程中受到伤害

答案 1 :(得分:0)

删除项目文件夹中的__init __.py文件。在Django中使用测试时出现相同的错误,然后将其删除,错误消失了。