DjangoRestFramework not validating required=Tru

2024-09-28 23:31:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我今天面临一个非常奇怪的问题。你知道吗

这是我的序列化程序类。你知道吗

 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 rest框架3.0.3


Tags: namejsontruedevicerequiredconnectionslengthmax
1条回答
网友
1楼 · 发布于 2024-09-28 23:31:03

DRF并没有明确说明required代表什么列表。 在其代码中,只要提供一个值,验证就会通过,即使该值是一个空列表。你知道吗

如果要确保列表不为空,则需要手动验证其内容。您可以在TopologySerializer上添加以下方法:

def validate_json(self, value):
    if not value:
        raise serializers.ValidationError("Connections list is empty")
    return value

我现在不能测试它,但它应该能工作。你知道吗

相关问题 更多 >