Переопределить Config приложения Django, создаётся лишняя миграция django-cms

31 октября 2021 г. 2:55

Иногда требуется переопределить Config по разным причинам.

Например, в моём случае после обновления django 3.2+ стала автоматически создаваться миграция для django-cms, когда вызываешь makemigrations для своего проекта.

Именно в этой ошибке такое поведение возникло из-за введения default_auto_field (см: https://docs.djangoproject.com/en/3.2/ref/applications/#django.apps.AppConfig.default_auto_field) и установки своего DEFAULT_AUTO_FIELD в значение отличное от django.db.models.AutoField, а именно django.db.models.BigAutoField. Поэтому при вызове makemigrations стала создаваться миграция, в которой для всех моделей django-cms тип поля ID становился BigAutoField.

Чтобы исправить ошибку выше, нужно переопределить CMSConfig, в каком-нибудь своём приложении в любом файле, но для конвенции лучше в apps.py:

# spec/apps.py
from cms.apps import CMSConfig as BaseCMSConfig


class CMSConfig(BaseCMSConfig):
    default_auto_field = 'django.db.models.AutoField'

Теперь в INSTALLED_APPS заменим 'cms' на наш:

INSTALLED_APPS = (
    # 'cms',
    'spec.apps.CMSConfig',
)

Если вы уже успели в своём проекте запустить migrate, то нужно вернуть правильный тип к ID полям. Для этого запустите makemigrations, чтобы снова ID поля стали типом django.db.models.AutoField, и примените миграцию командой migrate. Теперь можно уже удалять две последние миграции со своего проекта. Также можно удалить записи применённых миграций с базы данных (хотя это не принципиально).

Я думаю, что разработчики django-cms добавят по умолчанию default_auto_field, поэтому в своём проекте после обновления версии django-cms проверьте появился ли default_auto_field в CMSConfig. Если да, то верните 'cms' в INSTALLED_APPS.

Оцените статью

0 из 5 (всего 0 оценок)

captcha
Отмеченные звёздочкой поля ( * ) являются обязательными для заполнения.

Спасибо за ваш отзыв!

После нажатия кнопки "Отправить" ваше сообщение будет доставлено мне на почту.

Автор статьи

Артём Мальцев

Веб-разработчик, владеющий знаниями языка программирования Python, фреймворка Django, системы управления содержимым сайта Django CMS, платформы для создания интернет-магазина Django Shop и многих различных приложений, использующих эти технологии.

Права на использование материала, расположенного на этой странице https://vivazzi.pro/ru/it/override-config/:

Разрешается копировать материал с указанием её автора и ссылки на оригинал без использования параметра rel="nofollow" в теге <a>. Использование:

Автор статьи: Артём Мальцев
Ссылка на статью: <a href="https://vivazzi.pro/ru/it/override-config/">https://vivazzi.pro/ru/it/override-config/</a>

Больше: Правила использования сайта

Представляю вашему вниманию книгу, написанную моим близким другом Максимом Макуриным: Секреты эффективного управления ассортиментом.

Книга предназначается для широкого круга читателей и, по мнению автора, будет полезна специалистам отдела закупок и логистики, категорийным и финансовым менеджерам, менеджерам по продажам, аналитикам, руководителям и директорам, в компетенции которых принятие решений по управлению ассортиментом.

Комментарии: 0

Вы можете оставить комментарий как незарегистрированный пользователь.

Но зарегистрировавшись, вы сможете:

  • получать оповещения об ответах
  • просматривать свои комментарии
  • иметь возможность использовать все функции разработанных сервисов

Для комментирования от своего имени войдите или зарегистрируйтесь на сайте Vuspace

Отправить

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте

Выберите валюту для отображения денежных единиц