刚刚对类似的事情感到困惑,我相信我可以帮助您指出正确的方向。
要意识到的基本事情是活塞不关心你返回什么。对于我的用例,我想返回子资源。所以,如果我有:
{
"foo": "bar",
"baz": [{"id": 1}, {"id": 23}],
}
我可以只请求baz 对象,然后得到:
{
"baz": [{"id": 1}, {"id": 23}],
}
起初我尝试动态更改处理程序的fields 或excludes,但那完全是错误的方法。一旦我意识到活塞根本不在乎,我就这样做了:
if attrib is not None:
if hasattr(binder, attrib):
return getattr(binder, attrib)
else:
return rc.BAD_REQUEST
效果很好。一个警告:fields 或 excludes 适用于您返回的对象。 当我试图返回子资源并且没有获得所有字段时,这让我措手不及。因此,请在遇到问题时进行检查。
对于您的情况,具体来说,我认为您可以轻松地将缩略图生成为请求的大小,然后构建一个元对象以返回:
meta = dict()
meta['thumbnail' = generateThumbnail(width, height)
meta['other_field'] = base.other_field
return meta
看看这是否适合你。