我是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,它被认为是一种不好的做法,第三方应用程序应始终通过点检索。
2)使用django设置将所有django-scheduler迁移存储在我的日历应用程序中
MIGRATION_MODULES = {
'schedule': 'customer_calendar.migrations',
}
第二个对我来说很好看,但我不知道它是否被认为是解决这个问题的有效方法。是否有其他方法可以存储第三方应用程序迁移?
第二个对我来说很好看,但我不知道它是否被认为是解决这个问题的有效方法。是否有其他方法可以存储第三方应用程序迁移?
正如this answer所述,FeinCMS docs建议使用MIGRATION_MODULES
来监控FeinCMS作为第三方应用程序的迁移。
FeinCMS本身没有任何迁移。建议您在项目中自己添加FeinCMS模型的迁移。
...
- 在您的应用中创建一个名为migrate的新文件夹,其中包含一个空的init.py。
- 将以下配置添加到settings.py:
MIGRATION_MODULES = { 'page': 'yourapp.migrate.page', 'medialibrary': 'yourapp.migrate.medialibrary', }
你不能使用
migrations
作为FeinCMS迁移的文件夹名称,否则Django会感到困惑。