代码之家  ›  专栏  ›  技术社区  ›  AlexShein

Django Rest框架序列化程序在验证期间丢失了ListField数据

  •  0
  • AlexShein  · 技术社区  · 7 年前

    我想序列化字符串列表以及一些其他字段。不知何故,它似乎不在验证数据中。

    class OptionsSerializer(serializers.Serializer):
        lst = serializers.ListField(
            serializers.CharField(),
        )
        field_a = serializers.CharField()
        field_b = serializers.IntegerField()
    

    请求有效负载:

    {"lst":["abc"],"field_a":"some text","field_b":1}
    

    ipdb> serializer.is_valid()
    True
    ipdb> serializer.validated_data
    OrderedDict([('field_a', 'some text'), ('field_b', 1)])
    

    你知道为什么会这样吗?

    2 回复  |  直到 7 年前
        1
  •  2
  •   mehamasum    7 年前

    Documentation 说你需要设置 child ListField的关键字参数。

    child—应用于验证列表中对象的字段实例。如果未提供此参数,则不会验证列表中的对象。

    试试这个:

    lst = serializers.ListField(
        child=serializers.CharField()
    )
    
        2
  •  1
  •   Bernhard Vallant    7 年前

    child 是关键字参数,因此需要初始化 ListField 这样地:

     lst = serializers.ListField(
            child=serializers.CharField(),
     )
    
    推荐文章