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
我现在无法测试,但应该可以。
我今天遇到一个很奇怪的问题。
这是我的序列化程序 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
我现在无法测试,但应该可以。