繁体   English   中英

如何在 django rest 框架序列化程序中序列化布尔值列表?

[英]How can I serialize list of booleans in django rest framework serializer?

我正在使用 Django Rest 框架,我希望我的数据像这样存储: 'days': [True, True, False, True, False, False, False]作为返回的字段之一。

我想要一个序列化器:

class HistorySerializer(serializers.Serializer):
    days = serializers.BooleanField(many=True)

serializers.BooleanField没有“很多”参数。
我试过这样做:

class DaysListField(serializers.ListField):
    day = serializers.BooleanField()

class HistorySerializer(serializers.Serializer):
    days = DaysListField()

但它产生:

'days': [{'day': True}, {'day': True}, {'day': False}, {'day': False}, {'day': False}, {'day': False}, {'day': False}]

我也试过这样做:

class HistorySerializer(serializers.Serializer):
    days = serializers.SerializerMethodField()
    
    def get_days(self, obj) -> List[bool]:
        return obj.days

但是 Swagger 产生不正确的 output 类型的days ,它说它应该是boolean而不是[boolean]

正确处理此列表的最佳方法是什么?

SerializerMethodField()是执行此操作的好方法。 更改示例的 django 查询部分以返回列表。

class HistorySerializer(serializers.Serializer):
    days = serializers.SerializerMethodField()
    
    def get_days(self, obj):
        return list(obj.days.value_list('day', flat=True))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM