我有一个序列化程序,它引用了另一个序列化程序,其中有很多= 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,验证按预期工作。
为什么会这样?
答案 0 :(得分:0)
我假设您正在尝试执行PUT或POST。在这种情况下,DRF不支持开箱即用的嵌套关系,如果字段items
中没有任何内容 - 验证器返回true。如果您在items
中有某些内容,则应该返回错误。
要使POST / PUT工作,您需要覆盖SerializerB的.create()和.update()方法。