From 71581e8950f07a1d8b7e979401d71a1193dc0fa9 Mon Sep 17 00:00:00 2001 From: Rinna Izumi Date: Mon, 20 Oct 2025 10:43:07 +0900 Subject: [PATCH 1/2] Fixes #20422: Allow AggregateFilter and PrefixFilter to filter by family in GraphQL --- netbox/ipam/graphql/filters.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/netbox/ipam/graphql/filters.py b/netbox/ipam/graphql/filters.py index b8326cc43a..97f9cb1ef9 100644 --- a/netbox/ipam/graphql/filters.py +++ b/netbox/ipam/graphql/filters.py @@ -101,6 +101,13 @@ def contains(self, value: list[str], prefix) -> Q: q |= Q(**{f"{prefix}prefix__net_contains": query}) return q + def family( + self, + value: Annotated['IPAddressFamilyEnum', strawberry.lazy('ipam.graphql.enums')], + prefix, + ) -> Q: + return Q(**{f"{prefix}prefix__family": value.value}) + @strawberry_django.filter_type(models.FHRPGroup, lookups=True) class FHRPGroupFilter(PrimaryModelFilterMixin): @@ -292,6 +299,14 @@ def contains(self, value: list[str], prefix) -> Q: q |= Q(**{f"{prefix}prefix__net_contains": query}) return q + @strawberry_django.filter_field() + def family( + self, + value: Annotated['IPAddressFamilyEnum', strawberry.lazy('ipam.graphql.enums')], + prefix, + ) -> Q: + return Q(**{f"{prefix}prefix__family": value.value}) + @strawberry_django.filter_type(models.RIR, lookups=True) class RIRFilter(OrganizationalModelFilterMixin): From 8ed57ebdb73a141648e35f98244d33c4fecccc90 Mon Sep 17 00:00:00 2001 From: Jason Novinger Date: Mon, 27 Oct 2025 08:36:35 -0500 Subject: [PATCH 2/2] Add missing decorator to AggregateFilter.family() --- netbox/ipam/graphql/filters.py | 1 + 1 file changed, 1 insertion(+) diff --git a/netbox/ipam/graphql/filters.py b/netbox/ipam/graphql/filters.py index 97f9cb1ef9..c0a01d72b9 100644 --- a/netbox/ipam/graphql/filters.py +++ b/netbox/ipam/graphql/filters.py @@ -101,6 +101,7 @@ def contains(self, value: list[str], prefix) -> Q: q |= Q(**{f"{prefix}prefix__net_contains": query}) return q + @strawberry_django.filter_field() def family( self, value: Annotated['IPAddressFamilyEnum', strawberry.lazy('ipam.graphql.enums')],