Fix exclude-only multi filters matching nothing
MultiCriterion.to_q (used by SessionFilter for game/device) unconditionally added field__in=value even when value was empty, and __in=[] matches no rows — so a filter with only excludes (e.g. device excludes 11, no game/device includes) returned zero results. Guard the empty value like ChoiceCriterion already does, so an exclude-only criterion means 'all rows except the excluded ids'. https://claude.ai/code/session_01XzhXvMvw42CQGc9kmin3GS
This commit is contained in:
+3
-1
@@ -277,7 +277,9 @@ class MultiCriterion(_Criterion):
|
||||
def to_q(self, field_name: str) -> Q:
|
||||
m = self.modifier
|
||||
if m == Modifier.INCLUDES:
|
||||
q = Q(**{f"{field_name}__in": self.value})
|
||||
q = Q()
|
||||
if self.value:
|
||||
q &= Q(**{f"{field_name}__in": self.value})
|
||||
if self.excludes:
|
||||
q &= ~Q(**{f"{field_name}__in": self.excludes})
|
||||
return q
|
||||
|
||||
Reference in New Issue
Block a user