我今天面临一个很奇怪的问题。
这是我的序列化程序类。
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方面的经验,自从我在required = True字段中提到json之后,它就不应该接受上面的json。
但我能创造记录。有人能建议我为什么不验证json字段,以及它如何接受空列表作为json字段?
我使用django rest框架3.0.3
发布于 2015-05-27 11:34:03
DRF没有清楚地说明required代表什么列表。在其代码中,验证似乎通过只要提供一个值,即使该值是一个空列表。
如果要确保列表不是空的,则需要手动验证其内容。您可以通过在TopologySerializer上添加以下方法来做到这一点
def validate_json(self, value):
if not value:
raise serializers.ValidationError("Connections list is empty")
return value我现在不能测试它,但它应该能用。
https://stackoverflow.com/questions/30479563
复制相似问题