首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DjangoRestFramework不验证必需= True

DjangoRestFramework不验证必需= True
EN

Stack Overflow用户
提问于 2015-05-27 10:17:05
回答 1查看 258关注 0票数 4

我今天面临一个很奇怪的问题。

这是我的序列化程序类。

代码语言:javascript
复制
 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,例如:

代码语言:javascript
复制
{

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

    ]
}

根据我在DRF方面的经验,自从我在required = True字段中提到json之后,它就不应该接受上面的json。

但我能创造记录。有人能建议我为什么不验证json字段,以及它如何接受空列表作为json字段?

我使用django rest框架3.0.3

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-27 11:34:03

DRF没有清楚地说明required代表什么列表。在其代码中,验证似乎通过只要提供一个值,即使该值是一个空列表。

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

代码语言:javascript
复制
def validate_json(self, value):
    if not value:
        raise serializers.ValidationError("Connections list is empty")
    return value

我现在不能测试它,但它应该能用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30479563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档