diff --git a/apps/knowledge/serializers/document.py b/apps/knowledge/serializers/document.py index 292dbe81b..b077f99c6 100644 --- a/apps/knowledge/serializers/document.py +++ b/apps/knowledge/serializers/document.py @@ -683,10 +683,11 @@ class DocumentSerializers(serializers.Serializer): ] QuerySet(File).filter(id__in=source_file_ids).delete() QuerySet(File).filter(source_id=document_id, source_type=FileSourceType.DOCUMENT).delete() + paragraph_ids = QuerySet(model=Paragraph).filter(document_id=document_id).values_list("id", flat=True) + # 删除问题 + delete_problems_and_mappings(paragraph_ids) # 删除段落 QuerySet(model=Paragraph).filter(document_id=document_id).delete() - # 删除问题 - delete_problems_and_mappings([document_id]) # 删除向量库 delete_embedding_by_document(document_id) QuerySet(model=DocumentTag).filter(document_id=document_id).delete() @@ -1217,9 +1218,12 @@ class DocumentSerializers(serializers.Serializer): Document.objects.filter(id__in=document_id_list).values("meta")] QuerySet(File).filter(id__in=source_file_ids).delete() QuerySet(Document).filter(id__in=document_id_list).delete() - QuerySet(Paragraph).filter(document_id__in=document_id_list).delete() QuerySet(DocumentTag).filter(document_id__in=document_id_list).delete() - delete_problems_and_mappings(document_id_list) + paragraph_ids = QuerySet(Paragraph).filter(document_id__in=document_id_list).values_list("id", flat=True) + # 删除问题关系 + delete_problems_and_mappings(paragraph_ids) + # 删除段落 + QuerySet(Paragraph).filter(document_id__in=document_id_list).delete() # 删除向量库 delete_embedding_by_document_list(document_id_list) return True diff --git a/apps/knowledge/sql/list_problem.sql b/apps/knowledge/sql/list_problem.sql index affb51334..90f82dc6d 100644 --- a/apps/knowledge/sql/list_problem.sql +++ b/apps/knowledge/sql/list_problem.sql @@ -1,5 +1,6 @@ -SELECT - problem.*, - (SELECT "count"("id") FROM "problem_paragraph_mapping" WHERE problem_id="problem"."id") as "paragraph_count" - FROM - problem problem +SELECT problem.*, + (SELECT COUNT(ppm.id) + FROM problem_paragraph_mapping ppm + INNER JOIN paragraph p ON ppm.paragraph_id = p.id + WHERE ppm.problem_id = problem.id) AS "paragraph_count" +FROM problem problem