我正在将我所有模型的数据传递到模板的上下文,以在小型vue实例中使用它:
data = serializers.serialize("json", MyModel.objects.child_of(self).live().public())
我的模特有一张图片:
header = models.ForeignKey(
"wagtailimages.Image",
null=True,
blank=False,
on_delete=models.SET_NULL,
related_name="+",
)
现在,我想添加图像再现网址,以便能够在vue应用中处理渲染:
url = myimage.get_rendition('fill-300x186|jpegquality-60').url
但是我在myimage
部分苦苦挣扎。恐怕我想解决该问题的方法不起作用,因为我处于模型级别,并且还没有有关图像的信息,对吗?那么,是否有要以我的其他字段作为json来查询/传递图像再现?
我知道该API可以处理图像特征:
APIField("header", serializer=ImageRenditionField("fill-300x200|jpegquality-80"))
虽然我不能使用该API,但只能模仿该行为。
答案 0 :(得分:0)
我回到这个话题,意识到我的第一个答案是垃圾。我认为您可以做的是创建一个属性,并将其存储为属性。
@property
def rendition_url(self):
url = self.header.get_rendition('fill-300x186|jpegquality-60').url
return url
然后,您必须构建一个自定义序列化程序以解析为JSON。
Serialize the @property methods in a Python class
此答案提供了一个清晰的示例,说明了如何执行此操作。最重要的答案是过时的。使用下一个示例。