如何确保 Django Rest Framework 中至少有一个嵌套序列化器实例可供创建?

Tho*_*hom 5 django serialization django-rest-framework

一些代码而不是长解释:

我的主序列化器OrderSerializer和嵌套序列化器OffersSerializer

class OffersSerializer(serializers.Serializer):
    id = serializers.IntegerField(min_value=0)
    quantity = serializers.IntegerField(min_value=0)

class OrderSerializer(serializers.Serializer):
    offers = OffersSerializer(many=True, required=True)
Run Code Online (Sandbox Code Playgroud)

这样我就可以像这样发布数据:

{
    "offers": []
}
Run Code Online (Sandbox Code Playgroud)

这对于 DRF 有效,但我想检查是否至少有一个报价,例如:

{
    "offers": [{"id": 1, "quantity": 200}]
}
Run Code Online (Sandbox Code Playgroud)

如何确保至少有一份报价?

谢谢

Ykh*_*Ykh 5

class OrderSerializer(serializers.Serializer):
    def validate_offers(self, attrs):
        if len(attrs) == 0:
            raise serializers.ValidationError('at least one offer required')
        return attrs
Run Code Online (Sandbox Code Playgroud)