fix: 修复批量删除文档没有删除问题的缺陷
--bug=1048687 --user=王孝刚 【知识库】删除文档不会删除文档中分段关联的问题 https://www.tapd.cn/57709429/s/1624544
This commit is contained in:
parent
c54bfc7414
commit
77b15fd7ce
@ -1091,17 +1091,15 @@ def file_to_paragraph(file, pattern_list: List, with_filter: bool, limit: int):
|
|||||||
|
|
||||||
|
|
||||||
def delete_problems_and_mappings(document_ids):
|
def delete_problems_and_mappings(document_ids):
|
||||||
# 获取所有需要删除的问题ID
|
problem_paragraph_mappings = ProblemParagraphMapping.objects.filter(document_id__in=document_ids)
|
||||||
problem_ids = list(
|
problem_ids = set(problem_paragraph_mappings.values_list('problem_id', flat=True))
|
||||||
ProblemParagraphMapping.objects.filter(document_id__in=document_ids).values_list('problem_id', flat=True))
|
|
||||||
|
|
||||||
if problem_ids:
|
if problem_ids:
|
||||||
ProblemParagraphMapping.objects.filter(document_id__in=document_ids).delete()
|
problem_paragraph_mappings.delete()
|
||||||
remaining_problem_counts = ProblemParagraphMapping.objects.filter(problem_id__in=problem_ids).values(
|
remaining_problem_counts = ProblemParagraphMapping.objects.filter(problem_id__in=problem_ids).values(
|
||||||
'problem_id').annotate(count=Count('problem_id'))
|
'problem_id').annotate(count=Count('problem_id'))
|
||||||
|
remaining_problem_ids = {pc['problem_id'] for pc in remaining_problem_counts}
|
||||||
problem_ids_to_delete = [pid for pid in problem_ids if
|
problem_ids_to_delete = problem_ids - remaining_problem_ids
|
||||||
not any(pc['problem_id'] == pid for pc in remaining_problem_counts)]
|
|
||||||
Problem.objects.filter(id__in=problem_ids_to_delete).delete()
|
Problem.objects.filter(id__in=problem_ids_to_delete).delete()
|
||||||
else:
|
else:
|
||||||
ProblemParagraphMapping.objects.filter(document_id__in=document_ids).delete()
|
problem_paragraph_mappings.delete()
|
||||||
|
|||||||
@ -751,16 +751,15 @@ class ParagraphSerializers(ApiMixin, serializers.Serializer):
|
|||||||
|
|
||||||
|
|
||||||
def delete_problems_and_mappings(paragraph_ids):
|
def delete_problems_and_mappings(paragraph_ids):
|
||||||
problem_ids = list(
|
problem_paragraph_mappings = ProblemParagraphMapping.objects.filter(paragraph_id__in=paragraph_ids)
|
||||||
ProblemParagraphMapping.objects.filter(paragraph_id__in=paragraph_ids).values_list('problem_id', flat=True))
|
problem_ids = set(problem_paragraph_mappings.values_list('problem_id', flat=True))
|
||||||
|
|
||||||
if problem_ids:
|
if problem_ids:
|
||||||
ProblemParagraphMapping.objects.filter(paragraph_id__in=paragraph_ids).delete()
|
problem_paragraph_mappings.delete()
|
||||||
remaining_problem_counts = ProblemParagraphMapping.objects.filter(problem_id__in=problem_ids).values(
|
remaining_problem_counts = ProblemParagraphMapping.objects.filter(problem_id__in=problem_ids).values(
|
||||||
'problem_id').annotate(count=Count('problem_id'))
|
'problem_id').annotate(count=Count('problem_id'))
|
||||||
|
remaining_problem_ids = {pc['problem_id'] for pc in remaining_problem_counts}
|
||||||
problem_ids_to_delete = [pid for pid in problem_ids if
|
problem_ids_to_delete = problem_ids - remaining_problem_ids
|
||||||
not any(pc['problem_id'] == pid for pc in remaining_problem_counts)]
|
|
||||||
Problem.objects.filter(id__in=problem_ids_to_delete).delete()
|
Problem.objects.filter(id__in=problem_ids_to_delete).delete()
|
||||||
else:
|
else:
|
||||||
ProblemParagraphMapping.objects.filter(paragraph_id__in=paragraph_ids).delete()
|
problem_paragraph_mappings.delete()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user