Skip to content

Commit 35cbd57

Browse files
committed
fix: optimize deletion of related documents and files in knowledge management
1 parent e8903f5 commit 35cbd57

1 file changed

Lines changed: 9 additions & 5 deletions

File tree

apps/knowledge/serializers/knowledge.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -500,16 +500,18 @@ def edit(self, instance: Dict, select_one=True):
500500
def delete(self):
501501
self.is_valid()
502502
knowledge = QuerySet(Knowledge).get(id=self.data.get("knowledge_id"))
503-
QuerySet(Document).filter(knowledge=knowledge).delete()
503+
document_query_set = QuerySet(Document).filter(knowledge=knowledge)
504504
QuerySet(ProblemParagraphMapping).filter(knowledge=knowledge).delete()
505505
QuerySet(Paragraph).filter(knowledge=knowledge).delete()
506506
QuerySet(Problem).filter(knowledge=knowledge).delete()
507507
QuerySet(WorkspaceUserResourcePermission).filter(target=knowledge.id).delete()
508508
drop_knowledge_index(knowledge_id=knowledge.id)
509509
knowledge.delete()
510-
File.objects.filter(
511-
source_id=knowledge.id,
510+
QuerySet(File).filter(source_id=self.data.get("knowledge_id")).delete()
511+
QuerySet(File).filter(
512+
source_id__in=[str(i) for i in document_query_set.values_list("id", flat=True)]
512513
).delete()
514+
document_query_set.delete()
513515
QuerySet(ResourceMapping).filter(
514516
Q(target_id=self.data.get("knowledge_id")) | Q(source_id=self.data.get("knowledge_id"))
515517
).delete()
@@ -1568,7 +1570,7 @@ def batch_delete(self, instance: Dict, with_valid=True):
15681570
knowledge_query_set = QuerySet(Knowledge).filter(id__in=id_list, workspace_id=workspace_id)
15691571

15701572
# 删除所有关联
1571-
QuerySet(Document).filter(knowledge__in=knowledge_query_set).delete()
1573+
document_query_set = QuerySet(Document).filter(knowledge__in=knowledge_query_set)
15721574
QuerySet(ProblemParagraphMapping).filter(knowledge__in=knowledge_query_set).delete()
15731575
QuerySet(Paragraph).filter(knowledge__in=knowledge_query_set).delete()
15741576
QuerySet(Problem).filter(knowledge__in=knowledge_query_set).delete()
@@ -1578,7 +1580,9 @@ def batch_delete(self, instance: Dict, with_valid=True):
15781580
drop_knowledge_index(knowledge_id=k_id)
15791581
delete_embedding_by_knowledge(k_id)
15801582

1581-
File.objects.filter(source_id__in=id_list).delete()
1583+
QuerySet(File).filter(source_id__in=id_list).delete()
1584+
QuerySet(File).filter(source_id__in=[str(i) for i in document_query_set.values_list("id", flat=True)]).delete()
1585+
document_query_set.delete()
15821586
QuerySet(ResourceMapping).filter(Q(target_id__in=id_list) | Q(source_id__in=id_list)).delete()
15831587

15841588
knowledge_query_set.delete()

0 commit comments

Comments
 (0)