【发布时间】:2016-08-01 16:00:35
【问题描述】:
我在我的序列化程序中使用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 的值。
【问题讨论】:
-
你使用的是哪个版本的 Django Rest Framework?
-
@MuhammadShoaib djangorestframework==3.2.2
-
您可以尝试使用 self.otherfieldname 访问然后验证吗?在 DRF 版本 attrs,然后您可以使用
attr['field_name']简单地访问其他值。但我不确定如何在 >3 版中执行此操作 -
@MuhammadShoaib 没有
attrsparms 在 > 3 中。 -
你试过使用 self.field_name 吗?
标签: django django-rest-framework