При обновлении Django 1.1.1 до 1.3.1, admin.autodiscover () вызывает исключение, запрашивая типы контента - PullRequest
3 голосов
/ 22 февраля 2012

Я переключил проект 1.1.1 Django на 1.3.1.При вызове admin.autodiscover () в urls.py, из sites.py в инфраструктуре администратора возникает исключение:

ImproperlyConfigured at /
Put 'django.contrib.contenttypes' in your INSTALLED_APPS setting in order 
to use the admin application

В settings.py у меня есть:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
    'my.app'
)

Вещи, которые я проверял:

  1. Инфраструктура contenttypes действительно находится в моей настройке INSTALLED_APPS.
  2. Я не повторял нигде мое объявление INSTALLED_APPS
  3. Запись contenttypes вINSTALLED_APPS отображается перед записью администратора.
  4. Запуск оболочки django-admin.py и импорт "django.contrib.contenttypes" работает.

Если я перейду к ошибочным строкам вadmin (Django-1.3.1 / django / contrib / admin / sites.py в check_dependencies, строка 164), я вижу:

if not ContentType._meta.installed:
    raise ImproperlyConfigured(...)

Если я закомментирую проверку, я могу запустить свой проект иадмин работает.Я не уверен, как свойство _meta.installed должно быть установлено для типов моделей, поэтому я не знаю, что делать дальше.

Я должен также отметить, что эта же установка Django 1.3.1работает с другими проектами, используя аналогичные файлы настроек.

Любые советы или ресурсы будут оценены!Спасибо!

1 Ответ

1 голос
/ 22 марта 2012

django.contrib.contenttypes включает две модели: ContentType и ContentTypeManager.Я предполагаю, что вы не запустили manage.py syncdb после добавления django.contrib.contenttypes к вашему INSTALLED_APPS.

Это сделало бы понятной проверку if not ContentType._meta.installed: модель ContentType еще не доступна в базе данных.

...