如何验证序列化程序中嵌套项的长度?
How to validate the length of nested items in a serializer?
我正在使用 Django Rest Framework 2.4。
在 API 中,我期望包含两个键的字典:
{
"category" : <category-id>,
"items" : [{"title": <title>}, {"title": <title>}, {"title": <title>}, ....]
}
我有一个接受这本词典的ItemListSerializer
。 category 是 Category 模型的外键,因此我们获得了该数据。类别有一个限制 属性 其中
我有一个由嵌套的 ItemSerializer 处理的项目列表,其中许多设置为 True
但是,我想检查项目总数是否没有超过基于类别的限制?
在序列化程序上使用 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")
您可以创建 validate_items()
Django 休息框架将错误显示为该字段的字段错误。所以解析响应会更容易
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")
我正在使用 Django Rest Framework 2.4。 在 API 中,我期望包含两个键的字典:
{
"category" : <category-id>,
"items" : [{"title": <title>}, {"title": <title>}, {"title": <title>}, ....]
}
我有一个接受这本词典的ItemListSerializer
。 category 是 Category 模型的外键,因此我们获得了该数据。类别有一个限制 属性 其中
我有一个由嵌套的 ItemSerializer 处理的项目列表,其中许多设置为 True
但是,我想检查项目总数是否没有超过基于类别的限制?
在序列化程序上使用 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")
您可以创建 validate_items()
Django 休息框架将错误显示为该字段的字段错误。所以解析响应会更容易
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")