【发布时间】:2019-04-17 09:30:25
【问题描述】:
情况
我有一个自定义图像和再现模型,并按照the wagtail v2.4 guide 来实现它们:
class AccreditedImage(AbstractImage):
"""
AccreditedImage - Customised image model with optional caption and accreditation
"""
caption = models.CharField(max_length=255, blank=True)
accreditation = models.CharField(max_length=255, blank=True, null=True)
admin_form_fields = Image.admin_form_fields + (
'caption',
'accreditation',
)
class Meta:
verbose_name = 'Accredited image'
verbose_name_plural = 'Accredited images'
def __str__(self):
credit = ' ({})'.format(self.accreditation) if (self.accreditation is not None) and (len(self.accreditation) > 0) else ''
return '{}{}'.format(self.title, credit)
class AccreditedRendition(AbstractRendition):
"""
AccreditedRendition - stores renditions for the AccreditedImage model
"""
image = models.ForeignKey(AccreditedImage, on_delete=models.CASCADE, related_name='renditions')
class Meta:
unique_together = (('image', 'filter_spec', 'focal_point_key'),)
verbose_name = 'Accredited Image Rendition'
verbose_name_plural = 'Accredited Image Renditions'
在settings 我有:
WAGTAILIMAGES_IMAGE_MODEL = 'cms.AccreditedImage'
但是,我安装了两个第三方插件:puput 和 wagtail_events,每个插件都使用外键来跟踪图像。
当我运行 `manage.py makemigrations 时,会在 puput 和 wagtail_events site_packages 文件夹中创建额外的迁移以处理 FK 中的更改。迁移如下所示:
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('puput', '0005_blogpage_main_color'),
]
operations = [
migrations.AlterField(
model_name='blogpage',
name='header_image',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='cms.AccreditedImage', verbose_name='Header image'),
),
migrations.AlterField(
model_name='entrypage',
name='header_image',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='cms.AccreditedImage', verbose_name='Header image'),
),
]
问题
如果我真的应用了这些迁移,那么 puput 或 wagtail_events 会发布一个新版本,那么迁移历史就会损坏 - 例如我在 puput 上自动生成的 0006* 迁移及其新的 0006* 迁移分叉了历史
问题
有没有办法克服这个问题?或者推荐的做法?
此时我处于早期测试阶段,因此如果推荐的策略是从一开始就设置它以避免问题,我可以转储整个数据库并重新开始。
感谢大家的帮助!
【问题讨论】: