我对 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-scheduler 迁移存储在我的日历应用程序中
MIGRATION_MODULES = {
'schedule': 'customer_calendar.migrations',
}
第二个对我来说看起来不错,但我不知道它是否被认为是解决这个问题的有效方法。还有其他方法可以存储第三方应用程序迁移吗?