Skip to content

Commit 77b15fd

Browse files
committed
fix: 修复批量删除文档没有删除问题的缺陷
--bug=1048687 --user=王孝刚 【知识库】删除文档不会删除文档中分段关联的问题 https://www.tapd.cn/57709429/s/1624544
1 parent c54bfc7 commit 77b15fd

File tree

2 files changed

+12
-15
lines changed

2 files changed

+12
-15
lines changed

apps/dataset/serializers/document_serializers.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1091,17 +1091,15 @@ def file_to_paragraph(file, pattern_list: List, with_filter: bool, limit: int):
10911091

10921092

10931093
def delete_problems_and_mappings(document_ids):
1094-
# 获取所有需要删除的问题ID
1095-
problem_ids = list(
1096-
ProblemParagraphMapping.objects.filter(document_id__in=document_ids).values_list('problem_id', flat=True))
1094+
problem_paragraph_mappings = ProblemParagraphMapping.objects.filter(document_id__in=document_ids)
1095+
problem_ids = set(problem_paragraph_mappings.values_list('problem_id', flat=True))
10971096

10981097
if problem_ids:
1099-
ProblemParagraphMapping.objects.filter(document_id__in=document_ids).delete()
1098+
problem_paragraph_mappings.delete()
11001099
remaining_problem_counts = ProblemParagraphMapping.objects.filter(problem_id__in=problem_ids).values(
11011100
'problem_id').annotate(count=Count('problem_id'))
1102-
1103-
problem_ids_to_delete = [pid for pid in problem_ids if
1104-
not any(pc['problem_id'] == pid for pc in remaining_problem_counts)]
1101+
remaining_problem_ids = {pc['problem_id'] for pc in remaining_problem_counts}
1102+
problem_ids_to_delete = problem_ids - remaining_problem_ids
11051103
Problem.objects.filter(id__in=problem_ids_to_delete).delete()
11061104
else:
1107-
ProblemParagraphMapping.objects.filter(document_id__in=document_ids).delete()
1105+
problem_paragraph_mappings.delete()

apps/dataset/serializers/paragraph_serializers.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -751,16 +751,15 @@ def batch_generate_related(self, instance: Dict, with_valid=True):
751751

752752

753753
def delete_problems_and_mappings(paragraph_ids):
754-
problem_ids = list(
755-
ProblemParagraphMapping.objects.filter(paragraph_id__in=paragraph_ids).values_list('problem_id', flat=True))
754+
problem_paragraph_mappings = ProblemParagraphMapping.objects.filter(paragraph_id__in=paragraph_ids)
755+
problem_ids = set(problem_paragraph_mappings.values_list('problem_id', flat=True))
756756

757757
if problem_ids:
758-
ProblemParagraphMapping.objects.filter(paragraph_id__in=paragraph_ids).delete()
758+
problem_paragraph_mappings.delete()
759759
remaining_problem_counts = ProblemParagraphMapping.objects.filter(problem_id__in=problem_ids).values(
760760
'problem_id').annotate(count=Count('problem_id'))
761-
762-
problem_ids_to_delete = [pid for pid in problem_ids if
763-
not any(pc['problem_id'] == pid for pc in remaining_problem_counts)]
761+
remaining_problem_ids = {pc['problem_id'] for pc in remaining_problem_counts}
762+
problem_ids_to_delete = problem_ids - remaining_problem_ids
764763
Problem.objects.filter(id__in=problem_ids_to_delete).delete()
765764
else:
766-
ProblemParagraphMapping.objects.filter(paragraph_id__in=paragraph_ids).delete()
765+
problem_paragraph_mappings.delete()

0 commit comments

Comments
 (0)