2016-02-17 3 views
10

Я работаю с eav-django (значение сущности-атрибута) в django 1.9. Всякий раз, когда я выполнял команду ./manage.py runserver, я получил ошибку:ImportError: невозможно импортировать имя generic

Unhandled exception in thread started by <function wrapper at 0x10385b500> 
Traceback (most recent call last): 
    File "/Library/Python/2.7/site-packages/Django-1.9-py2.7.egg/django/utils/autoreload.py", line 226, in wrapper 
    fn(*args, **kwargs) 
    File "/Library/Python/2.7/site-packages/Django-1.9-py2.7.egg/django/core/management/commands/runserver.py", line 109, in inner_run 
    autoreload.raise_last_exception() 
    File "/Library/Python/2.7/site-packages/Django-1.9-py2.7.egg/django/utils/autoreload.py", line 249, in raise_last_exception 
    six.reraise(*_exception) 
    File "/Library/Python/2.7/site-packages/Django-1.9-py2.7.egg/django/utils/autoreload.py", line 226, in wrapper 
    fn(*args, **kwargs) 
    File "/Library/Python/2.7/site-packages/Django-1.9-py2.7.egg/django/__init__.py", line 18, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "/Library/Python/2.7/site-packages/Django-1.9-py2.7.egg/django/apps/registry.py", line 108, in populate 
    app_config.import_models(all_models) 
    File "/Library/Python/2.7/site-packages/Django-1.9-py2.7.egg/django/apps/config.py", line 202, in import_models 
    self.models_module = import_module(models_module_name) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/Users/shakil_grofers/src/django-eav/eav/models.py", line 42, in <module> 
    from django.contrib.contenttypes import generic 

Я пытался импортировать родовое, добавив:

from django.contrib.contenttypes import generic 

в models.py. Затем, после нескольких исследований, выяснилось, что generic устарел в Django 1.7 и больше не находится в Django 1.9. Может ли кто-нибудь сказать мне, в какой другой библиотеке эта функциональность была добавлена ​​в Django 1.9 и как ее использовать?

ответ

13

Модуль django.contrib.contenttypes был reorganized in Django 1.7.

Вместо django.contrib.contenttypes.generic.GenericForeignKey теперь вы можете использовать django.contrib.contenttypes.fields.GenericForeignKey. Смотрите пример кода в документации:

https://docs.djangoproject.com/en/1.7/ref/contrib/contenttypes/#generic-relations

+0

Вы можете предложить, как использовать eav-django с этим? –

+0

Вам нужно изменить исходный код 'django-eav' и заменить все' generic.GenericForeignKey 'на' fields.GenericForeignKey'. Вы также можете сделать запрос на перенос в репозиторий, пока вы на нем :) https://github.com/mvpdev/django-eav/ – Selcuk

1

Эта функциональность была перенесена в .models и .полей модули. Это только конкретный файл, который удаляется; функциональность общих отношений по-прежнему существует, просто разбивается на отдельные файлы.

+0

вы можете предложить, как использовать eav-django с этим? –

0

Обновление пакета Django.tagging с официального сайта Python, а не из источника Pip, потому что у Pip нет последней версии.