gpt4 book ai didi

python - DjangoRestFramework 未验证要求 = True

转载 作者:太空宇宙 更新时间:2023-11-03 11:27:47 25 4
gpt4 key购买 nike

我今天遇到了一个非常奇怪的问题。

这是我的序列化器类。

 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 View 调用 Topologyserializer,我正在传递一个 json,如下所示:

{

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

]
}

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

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

我正在使用 django rest 框架 3.0.3

最佳答案

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

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

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

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

关于python - DjangoRestFramework 未验证要求 = True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30479563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com