Python DjangoRestFramework未验证required=True
我今天面临一个非常奇怪的问题 这是我的序列化程序类Python DjangoRestFramework未验证required=True,python,django,django-rest-framework,Python,Django,Django Rest Framework,我今天面临一个非常奇怪的问题 这是我的序列化程序类 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.Seriali
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 framework 3.0.3DRF没有明确说明
所需的内容
代表列表。
在其代码中,只要提供一个值,验证就会通过,即使该值是一个空列表
如果要确保列表不为空,则需要手动验证其内容。您可以通过在TopologySerializer
上添加以下方法来实现这一点:
def validate_json(self, value):
if not value:
raise serializers.ValidationError("Connections list is empty")
return value
我现在无法测试它,但它应该可以工作。如果它只返回经过验证的数据,为什么要定义
create
方法?顺便问一下,您是如何创建记录的?如果你想返回一个拓扑对象(实例),你需要用返回拓扑(**validated_data)
实例化一个,或者用django的返回拓扑.objects.create(**validated_data)
@pynshia我正在使用DRF验证json