gpt4 book ai didi

python - 在 Django-rest-framework 中编写一个可以访问 validatated_data 的验证器类

转载 作者:行者123 更新时间:2023-12-01 04:32:41 25 4
gpt4 key购买 nike

是否可以在 Django-rest-framework 中拥有一个可以访问 validatated_data 的验证器类?

特别是,根据提交的数据使用验证器类检查关系。

它可以放在 serializer.create()serializer.update() 中,其中 validated_data 是一个参数,但它是可以将其作为 meta 中的 Validator 放置,例如:

class MySerializer(serializers.ModelSerializer):
...
class Meta:
...
validators = [MyClassValidator(... that has access to validated_data...)]

最佳答案

实现这一点的关键是使用 Django Rest Framework Validator Classset_context 方法来访问验证数据。当注入(inject)下面的 MyValidator Class 时,数据将成为 self.instance 上的一个属性。

http://www.django-rest-framework.org/api-guide/validators/#class-based

这是验证器类:

validators.py:

class MyValidator(object):

def __init__(self, items, message=None):
...

def __call__(self, kwargs):
...

def set_context(self, serializer):
"""
This hook is called by the serializer instance,
prior to the validation call being made.
"""
# Determine the existing instance, if this is an update operation.
self.instance = getattr(serializer, 'instance', None)

序列化器.py:

class MySerializer(serializers.ModelSerializer):

class Meta:
model = MyModel
validators = [MyValidator('items')]
fields = (...)

关于python - 在 Django-rest-framework 中编写一个可以访问 validatated_data 的验证器类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32151056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com