我有一个序列化器,它引用了另一个具有many=True的序列化器。简化版:
class SerializerA(serializers.Serializer):
id = serializers.CharField()
quantity = serializers.IntegerField()
class SerializerB(serializers.Serializer):
name = serializers.CharField()
items = SerializerA(many=True, required=True)
当我获得没有指定项字段的数据时,serializer.is_valid()出于某种原因返回True。但如果'many'参数设置为False,则验证按预期工作。
为什么会这样?
我假设您正在尝试执行PUT或POST。在这种情况下,DRF不支持开箱即用的嵌套关系,如果字段items
中没有任何内容,则validator返回true。如果您在items
中有内容,它应该返回一个错误。
要使POST/PUT工作,您需要重写SerializerB的。create()和。update()方法。