From fd2b7ba5b0edc229bd5cb87d539c17e2f881dddc Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sun, 25 Feb 2024 21:12:46 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20base=20=E4=BC=98=E5=8C=96utils=20querys?= =?UTF-8?q?et=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/utils/queryset.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/apps/utils/queryset.py b/apps/utils/queryset.py index 612d486c..9f7b5d32 100755 --- a/apps/utils/queryset.py +++ b/apps/utils/queryset.py @@ -1,4 +1,5 @@ from django.apps import apps +from django.db.models import Q def get_child_queryset_u(checkQueryset, obj, hasParent=True): @@ -10,11 +11,10 @@ def get_child_queryset_u(checkQueryset, obj, hasParent=True): ''' cls = type(obj) queryset = cls.objects.none() - fatherQueryset = cls.objects.filter(pk=obj.id) if hasParent: - queryset = queryset | fatherQueryset + queryset = cls.objects.filter(pk=obj.id) child_queryset = checkQueryset.filter(parent=obj) - while child_queryset: + while child_queryset.exists(): queryset = queryset | child_queryset child_queryset = checkQueryset.filter(parent__in=child_queryset) return queryset @@ -33,9 +33,9 @@ def get_child_queryset(name, pk, hasParent=True): fatherQueryset = cls.objects.filter(pk=pk) if fatherQueryset.exists(): if hasParent: - queryset = queryset | fatherQueryset + queryset = fatherQueryset child_queryset = cls.objects.filter(parent=fatherQueryset.first()) - while child_queryset: + while child_queryset.exists(): queryset = queryset | child_queryset child_queryset = cls.objects.filter(parent__in=child_queryset) return queryset @@ -50,11 +50,10 @@ def get_child_queryset2(obj, hasParent=True): ''' cls = type(obj) queryset = cls.objects.none() - fatherQueryset = cls.objects.filter(pk=obj.id) if hasParent: - queryset = queryset | fatherQueryset + queryset = cls.objects.filter(pk=obj.id) child_queryset = cls.objects.filter(parent=obj) - while child_queryset: + while child_queryset.exists(): queryset = queryset | child_queryset child_queryset = cls.objects.filter(parent__in=child_queryset) return queryset