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: