0

在我的模型的视图集中,我创建了一个自定义端点,并试图序列化一些快速元信息发送出去。具有基本串行器的自定义端点?

端点声明:

@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) + " is not JSON serializable")

任何想法,我怎样才能使这项工作?

编辑:

我在视图集中使用下面的代码做这项工作:

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架构。如果有更好的方法来做到这一点,我很想知道。

+0

您需要获取Thing的实例并将其传递给序列化程序。 –

回答

0
serializer = ThingMetaSerializer 

这不会初始化串行器。您应该使用:

serializer = ThingMetaSerializer(instance={'some field': 'some data'}) 

改为。