g:如何获取图像再现网址并将其与json中的其他字段一起传递?

时间:2019-09-13 09:32:39

标签: python wagtail

我正在将我所有模型的数据传递到模板的上下文,以在小型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,但只能模仿该行为。

1 个答案:

答案 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

此答案提供了一个清晰的示例,说明了如何执行此操作。最重要的答案是过时的。使用下一个示例。