Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Rest框架验证:将字段标记为错误_Django_Validation_Django Rest Framework_Django Validation - Fatal编程技术网

Django Rest框架验证:将字段标记为错误

Django Rest框架验证:将字段标记为错误,django,validation,django-rest-framework,django-validation,Django,Validation,Django Rest Framework,Django Validation,我开始在我的应用程序中使用django rest框架,我有一个关于序列化程序验证的问题。 在文档中,我找到了以下对象验证示例: from rest_framework import serializers class EventSerializer(serializers.Serializer): description = serializers.CharField(max_length=100) start = serializers.DateTimeField()

我开始在我的应用程序中使用django rest框架,我有一个关于序列化程序验证的问题。 在文档中,我找到了以下对象验证示例:

from rest_framework import serializers

class EventSerializer(serializers.Serializer):
    description = serializers.CharField(max_length=100)
    start = serializers.DateTimeField()
    finish = serializers.DateTimeField()

    def validate(self, attrs):
        """
        Check that the start is before the stop.
        """
        if attrs['start'] > attrs['finish']:
            raise serializers.ValidationError("finish must occur after start")
        return attrs
这将返回以下内容:

{"non_field_errors": ["finish must occur after start"]}
我的问题是,如何找出哪些字段是验证失败的原因? 在本例中,attrs['start']和attrs['finish']。 最后,我想要这样的东西:

{"non_field_errors": ["finish must occur after start"], 
 "start": ["finish must occur after start"], 
 "finish": ["finish must occur after start"]}  
以便我可以标记负责的表单字段。
我希望问题是清楚的。谢谢

创建
验证错误时,可以传入字典而不是字符串。字典要求
是字段名,
是错误字符串

def validate(self, attrs):
    """
    Check that the start is before the stop.
    """
    if attrs['start'] > attrs['finish']:
        raise serializers.ValidationError({"finish": "finish must occur after start"})
    return attrs
这将产生以下方面的输出:

{"start": ["finish must occur after start"], 
 "finish": ["finish must occur after start"]}

这听起来像是你要找的。

这正是我想要的。谢谢