perf: 优化node full value

pull/4892/head
ibuler 2020-10-30 10:43:44 +08:00 committed by Jiangjie.Bai
parent 36cd18ab9a
commit 15992c636a
3 changed files with 8 additions and 5 deletions

View File

@ -37,7 +37,7 @@ def migrate_nodes_full_value(apps, schema_editor):
ancestor_keys = get_node_ancestor_keys(node.key, True)
values = model.objects.filter(key__in=ancestor_keys).values_list('key', 'value')
values = [v for k, v in sorted(values, key=lambda x: len(x[0]))]
node.full_value = '/'.join(values)
node.full_value = '/' + '/'.join(values)
node.save()

View File

@ -316,7 +316,7 @@ class Asset(ProtocolsMixin, NodesRelationMixin, OrgModelMixin):
def nodes_display(self):
names = []
for n in self.nodes.all():
names.append(self.full_value)
names.append(n.full_value)
return names
def as_node(self):

View File

@ -410,7 +410,7 @@ class Node(OrgModelMixin, SomeNodesMixin, FamilyMixin, NodeAssetsMixin):
ordering = ['key']
def __str__(self):
return self.value
return self.full_value
# def __eq__(self, other):
# if not other:
@ -434,7 +434,6 @@ class Node(OrgModelMixin, SomeNodesMixin, FamilyMixin, NodeAssetsMixin):
def name(self):
return self.value
@lazyproperty
def computed_full_value(self):
# 不要在列表中调用该属性
values = self.__class__.objects.filter(
@ -442,7 +441,7 @@ class Node(OrgModelMixin, SomeNodesMixin, FamilyMixin, NodeAssetsMixin):
).values_list('key', 'value')
values = [v for k, v in sorted(values, key=lambda x: len(x[0]))]
values.append(self.value)
return '/'.join(values)
return '/' + '/'.join(values)
@property
def level(self):
@ -481,3 +480,7 @@ class Node(OrgModelMixin, SomeNodesMixin, FamilyMixin, NodeAssetsMixin):
if self.has_children_or_has_assets():
return
return super().delete(using=using, keep_parents=keep_parents)
def save(self, *args, **kwargs):
self.full_value = self.computed_full_value()
return super().save(*args, **kwargs)