如何使用现有的Tastypie资源将Django模型实例转换为JSON?

时间:2019-05-11 10:08:26

标签: json django tastypie

此问题与this other problem有关,但我希望使用现有的Tastypie资源将单个模型实例转换为JSON。

1 个答案:

答案 0 :(得分:0)

感谢@grimygoop的提示,我设法创建了一种方法,该方法可以使用关联的Tastypie资源将任何Django模型实例序列化为JSON。该过程是这样工作的...

def res_serialize(request, resource, obj):
    data = resource.full_dehydrate(resource.build_bundle(obj=obj, request=request))
    return resource.serialize(None, data, 'application/json')

要使用此功能,您必须已经定义了Resource类,并且还必须具有一个请求对象,此功能才能按预期工作。然后,您将像这样执行序列化:

res_serialize(request,ClientResource(),client)

请注意以上调用中的ClientResource()-我们必须传递Resource实例,而不仅仅是类引用。因此,在上面的示例中,对象client通过关联的资源类被序列化为JSON。例如,这可以在希望返回对象的序列化实例的自定义视图中提供帮助。

此外,对此稍加修改即可处理查询集,而不是单个对象。