Как сохранить миграции сторонних приложений в Django

Я довольно новичок в python и django и пытаюсь построить простой календарь на основе пакета django-scheduler. Согласно документации django-scheduler, пользовательский базовый класс может использоваться для добавления дополнительных полей, менеджеров и тому подобного.

Итак, я использовал абстрактную модель, чтобы добавить новое поле:

#myproject/customer_calendar/models.py
from django.db import models
from main.models import Customer

class CalendarAbstract(models.Model):
    customer = models.OneToOneField(to=Customer, null=True, blank=True, related_name='calendar')

    class Meta:
        abstract = True

И добавил это в settings.py

SCHEDULER_BASE_CLASSES = {
    'Calendar': ['customer_calendar.models.CalendarAbstract'],
}

Теперь, если я использую команду makemigrations, в приложении планировщика создается новая миграция (которая находится в пакетах сайта текущей виртуальной среды), которая не позволяет мне отслеживать миграции через VCS.

Я нашел пару решений:

1) Держите все приложение планировщика внутри моего проекта. По мнению SO, это считается плохой практикой, и сторонние приложения всегда должны извлекаться через pip.

2) Используйте параметр django для хранения всех миграций django-планировщика внутри моего приложения календаря

MIGRATION_MODULES = {
    'schedule': 'customer_calendar.migrations',
}

Второй выглядит хорошо для меня, но я не знаю, считается ли это правильным решением этой проблемы. Существуют ли другие способы хранения миграций сторонних приложений?

0 ответов

Второй вариант выглядит хорошо для меня, но я не знаю, считается ли это правильным решением этой проблемы. Существуют ли другие способы хранения миграций сторонних приложений?

Как также указано в этом ответе, документы FeinCMS рекомендуют использовать MIGRATION_MODULES для мониторинга миграции FeinCMS как стороннего приложения.

Сам FeinCMS не идет с какими-либо миграциями. Рекомендуется самостоятельно добавлять миграции для моделей FeinCMS в свой проект.

...

  • Создайте новую папку с именем migrate в своем приложении с пустым init.py внутри.

  • Добавьте следующую конфигурацию в файл settings.py:

    MIGRATION_MODULES = {
         'page': 'yourapp.migrate.page',
         'medialibrary': 'yourapp.migrate.medialibrary', }

Вы не должны использовать migrations в качестве имени папки для миграций FeinCMS, в противном случае Django будет сбит с толку.

Другие вопросы по тегам