From c4af6fa72d58063f6ae44de33463e4866c48fd31 Mon Sep 17 00:00:00 2001 From: ibuler Date: Mon, 18 Feb 2019 12:59:36 +0800 Subject: [PATCH] =?UTF-8?q?[Update]=20=E5=88=9B=E5=BB=BA=E5=AD=90=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E6=94=AF=E6=8C=81id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/api/node.py | 3 ++- apps/assets/models/node.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/assets/api/node.py b/apps/assets/api/node.py index f7f2ddc1a..829d4630a 100644 --- a/apps/assets/api/node.py +++ b/apps/assets/api/node.py @@ -163,12 +163,13 @@ class NodeChildrenApi(mixins.ListModelMixin, generics.CreateAPIView): def create(self, request, *args, **kwargs): instance = self.get_object() value = request.data.get("value") + _id = request.data.get('id') or None values = [child.value for child in instance.get_children()] if value in values: raise ValidationError( 'The same level node name cannot be the same' ) - node = instance.create_child(value=value) + node = instance.create_child(value=value, _id=_id) return Response(self.serializer_class(instance=node).data, status=201) def get_object(self): diff --git a/apps/assets/models/node.py b/apps/assets/models/node.py index 881b041d7..449c8e310 100644 --- a/apps/assets/models/node.py +++ b/apps/assets/models/node.py @@ -134,10 +134,10 @@ class Node(OrgModelMixin): count = max(values) + 1 if values else 1 return '{} {}'.format(name, count) - def create_child(self, value): + def create_child(self, value, _id=None): with transaction.atomic(): child_key = self.get_next_child_key() - child = self.__class__.objects.create(key=child_key, value=value) + child = self.__class__.objects.create(id=_id, key=child_key, value=value) return child def get_children(self, with_self=False): -- GitLab