失败的Django从ProcessedImageField迁移到FilerImageField

问题描述

我目前有一个可重复使用图像的模型:

class Image(models.Model):
    class Meta:
        verbose_name = _('Image')
        verbose_name_plural = _('Images')

    name = models.CharField(
        max_length=200,unique=False,blank=False,null=False,verbose_name=_('Image name')
    )
    full_size = ProcessedImageField(
        upload_to='images/',processors=[ResizetoFit(height=450,upscale=False)],format='JPEG',options={'quality': 90},)
    thumbnail = ImageSpecField(
        source='full_size',processors=[Thumbnail(width=200,height=115,crop=True,options={'quality': 60}
    )

    def __str__(self):
        return self.name

现在我正尝试从FilerImageField移到django-filer

我用其他名称添加了字段,这是相关的代码部分:

    image = models.ForeignKey(
        Image,on_delete=models.SET_NULL,verbose_name=_('Unit image'),null=True,blank=True
    )
    img = FilerImageField(
        null=True,blank=True,related_name="unit_img",on_delete=models.DO_nothing,)

我进行了以下迁移:

# Generated by Django 3.1.2 on 2020-11-02 20:09

from django.db import migrations
from filer.models import Image


def migrate_unit_images(apps,schema_editor):
    Units = apps.get_model('tageler','Unit')
    for unit in Units.objects.all():
        if unit.image:
            img,created = Image.objects.get_or_create(
                file=unit.image.full_size.file,defaults={
                    'name': unit.name,'description': unit.image.name,}
            )
            unit.img = img
            unit.save()


class Migration(migrations.Migration):

    dependencies = [
        ('tageler','0008_filer_create'),]

    operations = [
        migrations.RunPython(migrate_unit_images),]

我的问题是出现以下错误

ValueError: Cannot assign "<Image: This is a test image>": "Unit.img" must be a "Image" instance.

我认为我只是创建或获取了图像。我在这里想念什么?为什么我新创建的Image不是“ Image”实例?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)