Django 1.7冲突的模型

时间:2014-10-27 15:46:40

标签: django django-models python-module

我将我的应用程序安装在" 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'>.

2 个答案:

答案 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会导致其他问题,我认为这很常见。)