当many = True时,DRF序列化程序会跳过嵌套的序列化程序验证

时间:2015-07-30 09:38:56

标签: python django django-rest-framework

我有一个序列化程序,它引用了另一个序列化程序,其中有很多= True。简化版:

class SerializerA(serializers.Serializer):
    id = serializers.CharField()
    quantity = serializers.IntegerField()

class SerializerB(serializers.Serializer):
    name = serializers.CharField()
    items = SerializerA(many=True, required=True)

当我在没有指定items字段的情况下获取数据时,serializer.is_valid()由于某种原因返回True。但是,如果“很多”'参数设置为False,验证按预期工作。

为什么会这样?

1 个答案:

答案 0 :(得分:0)

我假设您正在尝试执行PUT或POST。在这种情况下,DRF不支持开箱即用的嵌套关系,如果字段items中没有任何内容 - 验证器返回true。如果您在items中有某些内容,则应该返回错误。

要使POST / PUT工作,您需要覆盖SerializerB的.create()和.update()方法。