Django 如何在validate(self)中将字段标记为validate(用于访问validated_数据)?

Django 如何在validate(self)中将字段标记为validate(用于访问validated_数据)?,django,validation,django-rest-framework,custom-fields,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 假设我不确定我在验证时有哪些字段,我在vali

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

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方法中的已验证数据的形式访问此数据?

您应该使用字典引发一个
ValidationError

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

然后,validate的返回值将作为
validated\u data
传递,一旦
is\u validate()
is
True
,“validate()方法……不返回任何内容,也不应更改值。”这看起来不像使用
validate()
是您的答案。提供更多细节可能会激发其他解决方案。如果您谈论的是DRF序列化程序上的验证,那么它应该可以工作。不要说您不能修改数据。如果我没记错的话,我用它从传递给序列化程序的其他自定义值构建了一个,甚至删除了一些值。我本想打那个的。我想问的是,如何正确地将清理后的值传递给我的create/update函数。换句话说,如何将我清理的字段标记为已验证的字段。虽然我不确定您的问题,但编辑了响应。验证原始数据的返回值不就是我所做的任何编辑吗?有没有办法只让我编辑的字段成为已验证的\u数据?如果某些字段无效,而我不想将其标记为有效,该怎么办?