2014-10-27 20 views
20

Instaluję aplikację w folderze "project/apps/myapp". Zarówno aplikacje, jak i foldery myapp mają pliki init .py (bez żadnego z nich brakuje błędu modułu). Teraz mam błąd:Django 1.7 sprzeczne modele

Exception Type: RuntimeError at/
    Exception Value: Conflicting 'person' models in application 'resume': <class 
'apps.resume.models.Person'> and <class 'resume.models.Person'>. 

Django importuje ten sam model z dwoma różnymi patami. Jak mogę to naprawić?

Pełny dziennik błędów:

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

Czy masz "wznowić" aplikacji zarówno na _project/resume_ i _project/apps/resume_? – dukebody

+0

nie tylko "projekt/aplikacje/wznowienie" – Crampus

+0

Czy można zrobić "z apps.resume.models importować Person jako Person1; from resume.models importuj Person jako Person2; wydrukuj Person1 .__ file__; wydrukować Person2 .__ file__' i opublikować wyniki tutaj? – dukebody

Odpowiedz

7

Zamiast importować cały projekt, a następnie aplikację następnie moduł wewnątrz aplikacji wystarczy zaimportować aplikację, która jest w środku projekt, a następnie moduł.

Zamiast

from webproject.app import model 

użytkowania

from app import model 

lub

from app.models import Staffs 
4

myślę this bug report (okazuje się, że jest to funkcja) jest związane z Twoim problemem.

Dla mnie problem został rozwiązany przez zaimportowanie tylko z resume.models, a nie apps.resume.models. Wyszukaj w projekcie projekt "from apps." i zastąp go.

(Dla mnie, usuwając __init__.py lub zmianę PYTHONPATH spowodowane innych problemów, mogę sobie wyobrazić, że to powszechne.)