gpt4 book ai didi

django - 当 `validators` 为真时,`many` 关键字参数不起作用?

转载 作者:行者123 更新时间:2023-12-02 01:09:12 24 4
gpt4 key购买 nike

def validate_number_of_product(products):
if len(products) > 1:
# this may be temporary
raise ValidationError(_('Too many products.'))


class OrderAddSerializer(serializers.ModelSerializer):
products = serializers.PrimaryKeyRelatedField(
queryset=Product.objects.filter(sold=False),
write_only=True,
validators=[validate_number_of_product],
many=True, allow_empty=False,
)

# ...

我将 PrimaryKeyRelatedFieldmany=True 一起使用,并且还需要(独立)验证该字段。但是在调用OrderAddSerializer.is_valid()的时候好像没有调用validate_number_of_product。这是 DRF 的限制还是因为我使用不当?

最佳答案

many=True 的行为与您假设的不同。它在后台创建一个 ListSerializer 来处理列表部分,并将每个实例委托(delegate)给“初始”序列化程序。

您需要确保将验证器提供给 ListSerializer 而不是 OrderAddSerializer

documentation解释了如何自定义 ListSerializer 初始化。正如您在 the source 中看到的那样,验证器通过 LIST_SERIALIZER_KWARGS 从 init 中过滤掉.

关于django - 当 `validators` 为真时,`many` 关键字参数不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45901232/

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