如何在django中存储第三方应用程序迁移



我对python和django相当陌生,并试图构建一个基于django调度器包的简单日历。根据django调度器文档,可以使用自定义基类来添加额外的字段、管理器等。

因此,我使用了一个抽象模型来添加一个新字段:

#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

并将其添加到设置.py

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

现在,如果我使用makemigrations命令,就会在调度器应用程序(位于当前虚拟环境的站点包中)中创建一个新的迁移,这不允许我通过VCS跟踪迁移。

我找到了几个解决方案:

1) 将整个调度程序应用程序保留在我的项目中。根据SO的说法,这被认为是一种糟糕的做法,第三方应用程序应该始终通过pip检索。

2) 使用django设置将所有django调度程序迁移存储在我的日历应用中

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

第二个在我看来不错,但我不知道它是否被认为是解决这个问题的有效方法。是否有其他方法来存储第三方应用程序迁移?

第二个对我来说很好,但我不知道是否考虑过是这个问题的有效解决方案。有其他方法吗存储第三方应用程序迁移?

如本答复中所述,FeinCMS文档建议使用MIGRATION_MODULES作为第三方应用程序来监控FeinCMS的迁移。

FeinCMS本身没有任何迁移。建议使用在您的项目

  • 在应用程序中创建一个名为migrate的新文件夹,其中包含一个空的init.py。

  • 将以下配置添加到您的设置中.py:

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

不能将migrations用作FeinCMS迁移的文件夹名称,否则Django会感到困惑。

相关内容

  • 没有找到相关文章

最新更新