diff --git a/apps/assets/api/node.py b/apps/assets/api/node.py index f7f2ddc1af113f53219b36ac004ba7d38fd1258f..829d4630adb432bde45d88adcaaa6e2609bbaefe 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 881b041d7bf062203e91dd63b226952551c0d836..449c8e3105766e74648f946a8f63a05fc5058421 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):