from rest_framework.response import Response
from rest_framework.views import APIView
# 编号生成器
class GetNumber(APIView):
def post(self, request):
# 获取父级id
pid = request.data.get('pid')
if not pid:
return Response({'msg': '缺少父级id', 'code': 400})
# 查询所有父级id为当前的
find_pid_all = Xxxx.objects.filter(pid=pid)
# 如果没有的话
if not find_pid_all:
# 如果长度大于1的话
if len(pid) > 1:
return Response({'msg': '缺少父级id', 'code': 200, 'id': pid + '0001'})
# 否则
else:
return Response({'msg': '缺少父级id', 'code': 200, 'id': pid + '001'})
# 编号列表
id_lis = [int(i.id) for i in find_pid_all]
# 排序
id_lis.sort()
# 是否有空缺
is_index = 0
# 新的编号
new_id = None
for i in range(len(id_lis)-1):
if id_lis[i]+1 == id_lis[i+1]:
continue
else:
is_index += 1
new_id = str(id_lis[i]+1)
break
if is_index:
return Response({'msg': '缺少父级id', 'code': 400, 'id': new_id})
else:
return Response({'msg': '缺少父级id', 'code': 400, 'id': str(id_lis[-1]+1)})