ImageSpecField未在源更改时重新生成

时间:2014-05-31 18:38:14

标签: python django imagekit

我正在使用django-imagekit 3.0.3。我在模型上进行了以下设置:

render_image = models.ImageField(upload_to='spec/', null=True, blank=True)
render_thumbnail = ImageSpecField([ResizeToFill(220, 220)],
                                  source='render_image',
                                  format='JPEG',
                                  options={'quality': 90})

哪个方面很有用:当我最初上传图片时,缩略图就可以了。我的问题是我以编程方式更改了原始图像。我想根据新缩略图重新生成缩略图,但我无法查看。我用这一行改变原始图像:

model.render_image = image_rel_path # that is, 'model/uuid.png'

工作正常,我可以访问新图像。我甚至可以使用imagekit缩略图模板标签来创建一个重新调整大小的最新缩略图。我会继续使用它,但我想要的是图片网址,而不是完整的图片标记,因为它需要是一个背景图片(图片工具包开发人员:如果没有方法可以获取模板中的网址)标记,请注意生成HTML违反了最小责任原则。)

我不想深入了解imagekit的内容,我只是想在缩小的源文件中正确生成缩略图'通过更改我更新源文件的方式发出信号,或者我希望能够调用类似model.render_thumbnail.generate(source=model.render_image)的内容。

1 个答案:

答案 0 :(得分:0)

我们走了。我当时避免使用此功能,但我又需要再次解决问题,并在generate上发现了ImageSpecField方法。您需要做的只是model.image_thumbnail.generate()。如果您收到错误MissingSource: The spec '<imagekit.specs.DynamicSpec object at 0x7fb8a93ef450>' has no source file associated with it.,则与ImageSpecField相关联的来源没有相关文件。