Django REST framework

Catalogue
  1. 1. Serializer
    1. 1.1. 验证
    2. 1.2. 递归字段
  2. 2. 参考资料

Serializer

验证

class OrderSerializer(serializers.Serializer):
order = serializers.IntegerField()
node = serializers.CharField()

@staticmethod
def validate_order(value):
try:
order = Order.objects.get(id=value)
if order:
return order
else:
raise serializers.ValidationError("工单不可", code=403)
except WebOrder.DoesNotExist:
raise serializers.ValidationError("工单不存在", code=404)

@staticmethod
def validate_node(value):
if re.match("^\d{8}$", value):
node_user = User.objects.get(id=value)
if node:
return node
raise serializers.ValidationError("参数有误", code=403)

serializer = OrderSerializer(data=request.GET)
if not serializer.is_valid():
return_msg = "\n".join([i + ": " + '\t'.join(serializer.errors[i])
for i in serializer.errors.keys()])
return JsonResponse({"status": 400, "data": {}, "msg": return_msg})
data = serializer.validated_data

递归字段

from rest_framework import serializers
from rest_framework_recursive.fields import RecursiveField

class TreeSerializer(serializers.Serializer):
name = serializers.CharField()
children = serializers.ListField(child=RecursiveField())

参考资料