From a54030e9c0e96acbafb533199b6e6972496bfa96 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 5 Jun 2024 12:50:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=8E=B7=E5=8F=96=E5=AD=90=E9=9B=86?= =?UTF-8?q?=E7=9A=84=E6=80=A7=E8=83=BD=E4=BC=98=E5=8C=96=E5=8F=8A=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/utils/mixins.py | 2 ++ apps/utils/queryset.py | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/apps/utils/mixins.py b/apps/utils/mixins.py index 4ba3f8f7..501f3f26 100755 --- a/apps/utils/mixins.py +++ b/apps/utils/mixins.py @@ -171,6 +171,8 @@ class BulkDestroyModelMixin(DestroyModelMixin): raise ValidationError(**PKS_ERROR) else: instance = self.get_object() + if hasattr(instance, "parent") and instance.__class__.objects.filter(parent=instance).exists(): + raise ParseError('存在子级,无法删除') self.perform_destroy(instance) return Response(status=204) diff --git a/apps/utils/queryset.py b/apps/utils/queryset.py index e346091f..ceb2eb89 100755 --- a/apps/utils/queryset.py +++ b/apps/utils/queryset.py @@ -52,9 +52,15 @@ def get_child_queryset2(obj, hasParent=True): obj实例 数据表需包含parent字段 是否包含父默认True + 若有parent_link字段则进行性能优化 ''' cls = type(obj) queryset = cls.objects.none() + if hasattr(cls, 'parent_link'): + queryset = cls.objects.filter(parent_link__contains=obj.id) + if hasParent: + queryset = queryset | cls.objects.filter(pk=obj.id) + return queryset if hasParent: queryset = cls.objects.filter(pk=obj.id) child_queryset = cls.objects.filter(parent=obj)