Django Rest Framework:如何序列化列表列表? [英] Django Rest Framework: How serialize list of list?
本文介绍了Django Rest Framework:如何序列化列表列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何使用Django Rest序列化程序序列化Floats列表?
How to serialize list of list of Floats using Django Rest serializers?
我的数据为( repr
我的对象列表):
My data is (repr
of my list of object):
[{
'id': '413',
'data': [
[None, 32.33125, None, None],
[None, 37.96, 48.70112359550562, 66.118],
[None, None, 58.06576923076923, 77.31023809523809],
[None, None, None, 110.0075],
[None, None, None, 139.89]
]
}, {
'id': '406',
'data': [
[None, 35.33125, None, None],
[None, 37.96, 43.123, 66.118],
[None, None, 58.12, 72,123],
[None, None, None, 119.000234],
[None, None, None, 139.89]
]
}]
对于试图提出不同方法的用户,我需要说明我需要序列化程序类,因为我想使用 generics.ListAPIView
,我需要设置 serializer_class
属性。
For users trying to propose different approach, I need to explain that I need serializer class because I want to use generics.ListAPIView
and I need to setup serializer_class
property.
推荐答案
您必须创建 Field
类,该类可与<$一起使用c $ c> Null 值:
You must create Field
class that will work with Null
values:
class FixedFloatField(serializers.FloatField):
def to_internal_value(self, data):
if data is None:
return data
return super().to_internal_value(data)
def to_representation(self, value):
if value is None:
return value
return super().to_representation(value)
(因为标准的抛出 TypeError:float()参数必须是字符串或数字,而不是'NoneType'
)
现在使用此序列化程序(技巧是使用 ListField
):
Now use this Serializer (the trick is to use ListField
):
class SearchResultSerializer(serializers.Serializer):
id = serializers.IntegerField()
data = serializers.ListField(
child=serializers.ListField(
child=FixedFloatField(
allow_null=True,
required=False,
default=None
)
)
)
这篇关于Django Rest Framework:如何序列化列表列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文