Как сохранить миграции сторонних приложений в 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 будет сбит с толку.