【发布时间】:2018-01-29 21:55:11
【问题描述】:
在我的模型视图集中,我创建了一个自定义端点,我正在尝试序列化一些快速元信息以发送出去。
端点声明:
@list_route(methods=['get'], url_path='meta')
def get_meta_details(self, request):
serializer = ThingMetaSerializer
return Response(serializer.data)
ThingMetaSerializer:
class ThingMetaSerializer(serializers.Serializer):
some_data = serializers.SerializerMethodField(method_name='ret_zero')
def ret_zero(self):
return 0
每次运行端点时都会出现以下错误:
TypeError(repr(o) + " 不是 JSON 可序列化的")
知道我怎样才能完成这项工作吗?
编辑:
我在视图集中使用以下代码完成了这项工作:
meta_data = {
'some_data': 0,
}
@list_route(methods=['get'], url_path='meta')
def get_meta_details(self, request):
# do some calculations
return JsonResponse(self.meta_data)
但是,此方法不会自动生成到 Django RF Schema 中。如果有更好的方法,我很想知道。
【问题讨论】:
-
您需要获取 Thing 的实例并将其传递给序列化程序。
标签: python django python-2.7 django-rest-framework django-serializer