You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简化用于JSON校验的Django Rest Framework序列化器?

序列化器简化方案

存在简化写法,在子序列化器不需要在其他地方复用的场景下,可以把嵌套的序列化器定义为内部类,避免拆分多个独立的顶层类,结构更紧凑,校验逻辑和原写法完全等价:

from rest_framework import serializers

class MySerializer(serializers.Serializer):
    # 嵌套定义子序列化器,不对外暴露命名空间
    class RanksSchema(serializers.Serializer):
        class TopDictSchema(serializers.Serializer):
            start = serializers.IntegerField()
            end = serializers.IntegerField()
        # 补充child参数校验列表元素为整数,比原写法校验更严谨
        top_list = serializers.ListField(child=serializers.IntegerField())
        top_dict = TopDictSchema()
        top_id = serializers.IntegerField()

    ranks = RanksSchema()

调用验证逻辑和原写法一致,返回结果不变:

MySerializer(data=a).is_valid() == True
> True

补充说明

如果后续TopDictSchema或者RanksSchema需要在其他序列化器中复用,还是建议拆分为独立的顶层类,方便复用。


内容的提问来源于stack exchange,提问作者user1367204

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 06:21:02