在DRF的字段级别验证中获取另一个字段的值

用户名

Field level Validation在序列化器中使用,并且遇到在验证第二个字段时需要第一个字段的值的情况。我知道object level validation我可以访问它,但是我的Serailzer有访问权限many=True,在对象级别验证中,我无法告诉客户端哪个迭代引发了错误。

Serailzer:

class Keys_Serializer(serializers.Serializer):
    """
    """
    key_id = serializers.IntegerField(required=True)
    key_name = serializers.CharField(required=True)
    value_id = serializers.IntegerField(required=False)

    def validate_key_id(self, value):
        """
        validate key id
        """
         *** validate key_id here ***
        return value

    def validate_value_id(self, value):
        """
        validate value_id w.r.t key_id
        """
         *** I need key_id of current iteration here so that I can validate value_id. ***
        return value

在value_id验证中,有什么方法可以访问key_id的值。

ilse2005

不,那是不可能的。如果您需要访问多个值,则必须使用Object-level validation参见docs):

class Keys_Serializer(serializers.Serializer):

    key_id = serializers.IntegerField(required=True)
    key_name = serializers.CharField(required=True)
    value_id = serializers.IntegerField(required=False)

    def validate(self, data):
        # here you can access all values
        key_id = data['key_id']
        value_id = data['value_id']
        # perform you validation
        if key_id != value_id:
            raise serializers.ValidationError("key_id must be equal to value_id")
        return data

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过另一个字段中的 1 索引值获取数组项

数组中的php foreach获取另一个字段的值

在Redux表单中基于另一个字段验证一个字段

Django根据另一个字段的值验证字段

根据另一个字段的值验证Django模型字段?

Laravel根据另一个字段的值来验证该字段

Bootstrap x-editable:根据另一个字段的值验证字段

Laravel 5.6:将不同的表单字段值传递到另一个字段的验证中

如果我知道第一个字段值,如何从模型中获取另一个字段值?

获取一个字段的最大值,但仅针对另一个字段中具有相同值的其他文档

将另一个字段从字段添加到验证器中

根据另一个字段的值在MongoDB中投影一个字段

检查一个字段的值是否在另一个字段中

基于Jackson中另一个字段值的条件字段要求?

日期字段的最大值到Postgresql中的另一个字段

如何读取名称在另一个字段中的行字段的值

symfony验证另一个字段是否为特定值

Laravel Validator Facade-根据另一个字段值验证大小

根据另一个字段的值验证 JSON 数据

Laravel验证规则,如果值存在于另一个字段数组中

Laravel 验证规则 required_if 另一个字段值在数组中,不起作用

在Laravel 5.8中验证多维数组时是否可以使用另一个字段的值?

DRF:验证另一个表中的字段

Rails会验证一个字段值,除非另一个字段具有值

Json模式根据另一个字段验证一个字段的长度

MySQL用另一个字段中的值覆盖值

在 acumatica 中,如何获取选择器的值并使用它来填充另一个字段?

如何按多个字段分组并获取另一个字段的计数

JavaScript 获取与另一个字段集中的每个值对应的字段值数组