drf:未调用自定义字段验证功能

时间:2017-04-05 10:16:46

标签: django serialization django-rest-framework

我有一个以下序列化器:

class QuestionSerializer(serializers.ModelSerializer):
    choices = ChoiceSerializer(many=True)
    image = Base64ImageField(required=False)

    def validate_image(self, value):
        import ipdb
        ipdb.set_trace()
        # if value.get('fileArray', None):
        #     if value.get('dataURL', None):
        #         return value.get('dataURL')
        #     else:
        #         raise serializers.ValidationError("No file data present")
        # else:
        #     return None

    class Meta:
        model = Question
        fields = ('id', 'detail', 'image', 'true_false_answer', 'type', 'choices')

然后在视图中:

serializer = QuestionSerializer(data=data)
serializer.is_valid()

这给了我错误

serializer.errors

给出:

{'image': ['The submitted data was not a file. Check the encoding type on the form.']}

我发现 validate_image 永远不会被调用。 可能是什么问题?

1 个答案:

答案 0 :(得分:2)

  

我发现从未调用validate_image。可能是什么问题?

如果默认DRF验证通过,

tf.Variable将被称为

当序列化程序已经知道该字段无效时验证图像字段没有意义。