如何在validate(self)中将字段标记为已验证(用于在validated_data中访问)?

时间:2017-03-08 05:11:47

标签: django validation django-rest-framework custom-fields

假设我有一个我要验证/清理的字段。对于我知道我会使用的领域,我通常会这样做。

def validate_number(self, value):
   if value == 7:
     raise serializers.ValidationError('7 is bad!')
   if value == 5:
     return None  # I want 5 to come back as None
   return value

假设我不确定验证中有哪些字段,我在validate()中查看这些字段,我将如何实现同样的行为?

def validate(self, data):
  if data['number'] == 7:
     raise serializers.ValidationError('7 is bad!')
  if data['number'] == 5:
     data['number'] = None
  return data

我能否在.create / .update方法中将其作为validated_data访问?

1 个答案:

答案 0 :(得分:0)

你应该用词典提出ValidationError

     raise serializers.ValidationError({'number': '7 is bad!'})

然后,验证的返回值将作为validated_data传递,is_valid()True后您将有权访问。