python - 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, upscale=False)],
format='JPEG',
options={'quality': 60}
)
def __str__(self):
return self.name
现在我正试图转移到FilerImageField
from 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",
verbose_name=_('Unit image'),
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.
我以为我刚刚创建或获取了图像。我在这里想念什么?为什么我新创建的图像不是“图像”实例?
解决方案
推荐阅读
- android - 10 英寸平板电脑正在从错误的尺寸文件夹加载值
- javascript - 变量链接在两个组件vue js中
- error-logging - 如何在 Python 中显示日志消息
- css - 无法使用 rvest 刮掉所有行
- powershell - Powershell 创建邮箱 (Office 365)
- amazon-web-services - 如何在侦听器规则上创建多个条件
- python - 如何自动化与父网页交互的 chrome 扩展?
- javascript - 无法将 [object Object] 转换为 (class)
- image - 如何在颤振中以base64显示pdf?
- java - 为什么我的带有 android volley 的 http post 请求会引发错误(localhost)?