From d45e31520eb42d7950a4c199f992dabf11443fa8 Mon Sep 17 00:00:00 2001 From: Mike Date: Wed, 6 Sep 2023 22:19:12 -0700 Subject: [PATCH] fix(queryset): apply filter to combine multiple eav filter kwargs --- eav/queryset.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/eav/queryset.py b/eav/queryset.py index 1b0d32d..9f70aa2 100644 --- a/eav/queryset.py +++ b/eav/queryset.py @@ -26,6 +26,7 @@ from django.core.exceptions import FieldDoesNotExist, ObjectDoesNotExist from django.db.models import Case, IntegerField, Q, When from django.db.models.query import QuerySet from django.db.utils import NotSupportedError +from django.db.models import Subquery from eav.models import Attribute, EnumValue, Value @@ -179,8 +180,10 @@ def eav_filter(func): nkey, nval = expand_eav_filter(self.model, key, value) if nkey in nkwargs: - # Apply AND to both querysets. - nkwargs[nkey] = (nkwargs[nkey] & nval).distinct() + # Add filter to check if matching entity_id is in the previous queryset with same nkey + nkwargs[nkey] = nval.filter( + entity_id__in=nkwargs[nkey].values_list('entity_id', flat=True) + ).distinct() else: nkwargs.update({nkey: nval})