我正在使用Django Rest Framework 2.4。 在API中,我期待包含两个键的字典:
{
"category" : <category-id>,
"items" : [{"title": <title>}, {"title": <title>}, {"title": <title>}, ....]
}
我有ItemListSerializer
接受此词典。 category是Category模型的外键,因此我们获取该数据。 category有一个限制属性
我有一个项目列表,由嵌套的ItemSerializer处理,其中许多项设置为True
但是,我想检查项目总数是否超过基于类别的限制?
答案 0 :(得分:3)
在序列化程序上使用validate()方法检查长度,如果没有通过,则引发ValidationError
:
class YourSerializer(serializers.Serializer):
items = ItemSerializer(many=True)
def validate(self, attrs):
if len(attrs['items']) > YOUR_MAX:
raise serializers.ValidationError("Invalid number of items")
答案 1 :(得分:3)
您可以创建validate_items()
Django rest框架会将错误显示为该字段的字段错误。所以解析响应会更容易
class YourSerializer(serializers.Serializer):
items = ItemSerializer(many=True)
def validate_items(self, items):
if len(items) > YOUR_MAX:
raise serializers.ValidationError("Invalid number of items")