我将我的应用程序安装在" project / apps / myapp"夹。 apps和myapp文件夹都有 init .py文件(没有任何模块丢失错误)。现在我发现了错误:
Exception Type: RuntimeError at /
Exception Value: Conflicting 'person' models in application 'resume': <class
'apps.resume.models.Person'> and <class 'resume.models.Person'>.
Django使用两个不同的pathes导入相同的模型。我该如何解决?
完整错误日志:
Traceback:
File "/home/voxa/.virtualenvs/42-test/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
98. resolver_match = resolver.resolve(request.path_info)
File "/home/voxa/.virtualenvs/42-test/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve
343. for pattern in self.url_patterns:
File "/home/voxa/.virtualenvs/42-test/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in url_patterns
372. patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/home/voxa/.virtualenvs/42-test/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in urlconf_module
366. self._urlconf_module = import_module(self.urlconf_name)
File "/usr/lib/python2.7/importlib/__init__.py" in import_module
37. __import__(name)
File "/home/voxa/django/FortyTwoTestTask/fortytwo_test_task/urls.py" in <module>
4. from resume import views
File "/home/voxa/django/FortyTwoTestTask/apps/resume/views.py" in <module>
4. from resume.models import Person
File "/home/voxa/django/FortyTwoTestTask/apps/resume/models.py" in <module>
3. class Person(models.Model):
File "/home/voxa/.virtualenvs/42-test/local/lib/python2.7/site-packages/django/db/models/base.py" in __new__
285. new_class._meta.apps.register_model(new_class._meta.app_label, new_class)
File "/home/voxa/.virtualenvs/42-test/local/lib/python2.7/site-packages/django/apps/registry.py" in register_model
213. (model_name, app_label, app_models[model_name], model))
Exception Type: RuntimeError at /
Exception Value: Conflicting 'person' models in application 'resume': <class 'apps.resume.models.Person'> and <class 'resume.models.Person'>.
答案 0 :(得分:8)
而不是导入所有项目然后应用程序,然后应用程序内的模块只导入项目内的应用程序,然后导入模块。
而不是
from webproject.app import model
使用
from app import model
或
from app.models import Staffs
答案 1 :(得分:4)
我认为this bug report(证明它是一个功能)与您的问题有关。
对我来说,问题是通过仅从resume.models
导入而不是apps.resume.models
来解决的。因此,在项目中搜索"from apps."
并替换它。
(对我而言,删除__init__.py
或更改PYTHONPATH
会导致其他问题,我认为这很常见。)