DjangoRestFramework 未验证要求 = True

DjangoRestFramework not validating required = True

我今天遇到一个很奇怪的问题。

这是我的序列化程序 class。

 class Connectivity(serializers.Serializer):

    device_type = serializers.CharField(max_length=100,required=True)
    device_name = serializers.CharField(max_length=100,required=True)

class Connections(serializers.Serializer):

    device_name = serializers.CharField(max_length=100,required=True)
    connectivity = Connectivity(required = True, many = True)


class Topologyserializer(serializers.Serializer):

    name = serializers.CharField(max_length=100,required=True, \
                                  validators=[UniqueValidator(queryset=Topology.objects.all())])
    json = Connections(required=True,many=True)

    def create(self, validated_data):
        return validated_data

我正在从 Django 视图中调用 Topologyserializer,我正在传递一个 json,例如:

{

    "name":"tokpwol",
    "json": [

    ]
}

根据我使用 DRF 的经验,因为我在 json 字段中提到了 required = True 它不应该接受上面的 json.

但我能够创建记录。 谁能告诉我为什么它不验证 json 字段以及它如何接受空列表作为 json 字段?

我正在使用 Django 休息框架 3.0.3

DRF 没有明确说明 required 代表什么列表。 在它的代码中,似乎只要提供了一个值,验证就会通过,即使该值是一个空列表。

如果要确保列表不为空,则需要手动验证其内容。您可以通过在 TopologySerializer:

上添加以下方法来做到这一点
def validate_json(self, value):
    if not value:
        raise serializers.ValidationError("Connections list is empty")
    return value

我现在无法测试,但应该可以。