2

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

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 缩略图模板标签来创建重新调整大小的最新缩略图。我会这样做,但我只想要图像 url,而不是完整的图像标签,因为它需要是背景图像(imagekit 开发人员:如果没有办法只在模板标签中获取 url,请请注意,生成 html 违反了最小责任原则)。

我不想深入研究 imagekit 的内容,我只想通过更改我更新源文件的方式在“源文件已更改”信号上正确生成缩略图,或者我希望能够调用类似的东西model.render_thumbnail.generate(source=model.render_image)

4

1 回答 1

1

开始了。我当时避免了这种情况,但我发现需要再次解决这个问题,我generateImageSpecField. 你需要做的就是model.image_thumbnail.generate()。如果您收到错误消息,则与关联MissingSource: The spec '<imagekit.specs.DynamicSpec object at 0x7fb8a93ef450>' has no source file associated with it.的源ImageSpecField没有关联文件。

于 2014-11-20T22:29:58.937 回答