Изменилась структура импорта в Django 3.2?

#python #django

Вопрос:

Я только что открыл новый Djangoproject с v3.2 и попытался импортировать свои приложения, как обычно, когда получил неправильно настроенное исключение в одном из моих приложений.

Шаги:

  1. создайте и активируйте env, pip установите django (без номера версии по умолчанию v3.2 на данный момент)
  2. django-администратор проекта startproject
  3. проект mkdirприложения, проект mkdirприложенияядро
  4. django-администратор основного проекта startappприложенияядро
  5. при необходимости перенесите
  6. Перейдите в настройки и добавьте «apps.core» в INSTALLED_APPS

Результат, при попытке запустить сервер

 libsite-packagesdjangoappsconfig.py", line 246, in create
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Cannot import 'core'. Check that 
'apps.core.apps.CoreConfig.name' is correct.
 

Структура

 -- project
  -- apps
    -- core
      -- apps.py
  -- project
  -- manage.py
 

coreapps.py

 class CoreConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'core'
 

Поле auto_field кажется новым, поскольку оно не было интегрировано в более ранние версии, однако это не должно повлиять на импорт, если я правильно это понимаю.

Я вернулся к версии v3.1.3, чтобы проверить, не пошло ли что-то еще не так, но при таком подходе это работает нормально.

У кого-нибудь есть такие же проблемы или есть решение?

Спасибо

Ответ №1:

Я столкнулся с той же проблемой, также в приложении с именем apps.core (совпадение).

С 3.1/3.2 вы должны полностью указать имя:

 class CoreConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'apps.core'
 

Похоже, это работает и для версии 3.0.