From c8f17e06a24810be95049306dc34c34ed6a22d7c Mon Sep 17 00:00:00 2001 From: matthew-242 <112594105+matthew-242@users.noreply.github.com> Date: Tue, 20 Jan 2026 01:09:03 +1100 Subject: [PATCH] Add support to filter on cached relations _location, _region, _site and _site_group to ScopedFilterMixin (#21162) --- netbox/dcim/graphql/filter_mixins.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/netbox/dcim/graphql/filter_mixins.py b/netbox/dcim/graphql/filter_mixins.py index 50ce98cfb..f86969a8e 100644 --- a/netbox/dcim/graphql/filter_mixins.py +++ b/netbox/dcim/graphql/filter_mixins.py @@ -13,6 +13,7 @@ if TYPE_CHECKING: from netbox.graphql.filter_lookups import IntegerLookup from extras.graphql.filters import ConfigTemplateFilter from ipam.graphql.filters import VLANFilter, VLANTranslationPolicyFilter + from dcim.graphql.filters import LocationFilter, RegionFilter, SiteFilter, SiteGroupFilter from .filters import * __all__ = ( @@ -35,6 +36,20 @@ class ScopedFilterMixin: ) scope_id: ID | None = strawberry_django.filter_field() + # Cached relations + _location: Annotated['LocationFilter', strawberry.lazy('dcim.graphql.filters')] | None = ( + strawberry_django.filter_field(name='location') + ) + _region: Annotated['RegionFilter', strawberry.lazy('dcim.graphql.filters')] | None = ( + strawberry_django.filter_field(name='region') + ) + _site_group: Annotated['SiteGroupFilter', strawberry.lazy('dcim.graphql.filters')] | None = ( + strawberry_django.filter_field(name='site_group') + ) + _site: Annotated['SiteFilter', strawberry.lazy('dcim.graphql.filters')] | None = ( + strawberry_django.filter_field(name='site') + ) + @dataclass class ComponentModelFilterMixin: