diff --git a/netbox/extras/querysets.py b/netbox/extras/querysets.py index c87c7c566..4ee9630cb 100644 --- a/netbox/extras/querysets.py +++ b/netbox/extras/querysets.py @@ -13,8 +13,15 @@ class ConfigContextQuerySet(QuerySet): # `device_role` for Device; `role` for VirtualMachine role = getattr(obj, 'device_role', None) or obj.role + # Match against the directly assigned region as well as any parent regions. + region = getattr(obj.site, 'region', None) + if region: + regions = region.get_ancestors(include_self=True) + else: + regions = [] + return self.filter( - Q(regions=getattr(obj.site, 'region', None)) | Q(regions=None), + Q(regions__in=regions) | Q(regions=None), Q(sites=obj.site) | Q(sites=None), Q(roles=role) | Q(roles=None), Q(tenants=obj.tenant) | Q(tenants=None),