Django Rest Framework在ListField中验证Child

时间:2017-10-26 20:28:34

标签: python django django-rest-framework

我创建了一个DictField实例列表。 这是我的serializer.py

class DetailSerializer(serializers.Serializer):
"""Serialize order"""
    id = serializers.IntegerField(read_only=True)
    order= serializers.IntegerField(min_value=1)

class OrderSerializer(serializers.ModelSerializer):
    orderlist = DetailSerializer(many=True)

现在我想对订单列表进行验证,例如确保此列表中的每个订单都是strict_increasing。我该怎么办?

1 个答案:

答案 0 :(得分:0)

您可以通过覆盖validate中的OrderSerializer方法来定义验证逻辑。官方文档很好地解释了它(阅读“对象级验证”):http://www.django-rest-framework.org/api-guide/serializers/#validation

在你的情况下,它看起来像这样:

class OrderSerializer(serializers.ModelSerializer):
    orderlist = DetailSerializer(many=True)

    def validate(self, data):
        # custom validation logic here

调用is_valid()订单序列化程序实例,然后使用您的自定义逻辑调用validate方法,并通知您任何错误。