diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index 4c7ee80ed..780243553 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -2354,13 +2354,13 @@ class ScopedFilterSet(BaseFilterSet): ) site_group_id = TreeNodeMultipleChoiceFilter( queryset=SiteGroup.objects.all(), - field_name='_sitegroup', + field_name='_site_group', lookup_expr='in', label=_('Site group (ID)'), ) site_group = TreeNodeMultipleChoiceFilter( queryset=SiteGroup.objects.all(), - field_name='_sitegroup', + field_name='_site_group', lookup_expr='in', to_field_name='slug', label=_('Site group (slug)'), diff --git a/netbox/dcim/models/mixins.py b/netbox/dcim/models/mixins.py index 9575a9e96..353bcfe4b 100644 --- a/netbox/dcim/models/mixins.py +++ b/netbox/dcim/models/mixins.py @@ -75,7 +75,7 @@ class CachedScopeMixin(models.Model): blank=True, null=True ) - _sitegroup = models.ForeignKey( + _site_group = models.ForeignKey( to='dcim.SiteGroup', on_delete=models.CASCADE, related_name='_%(class)ss', @@ -93,20 +93,20 @@ class CachedScopeMixin(models.Model): super().save(*args, **kwargs) def cache_related_objects(self): - self._region = self._sitegroup = self._site = self._location = None + self._region = self._site_group = self._site = self._location = None if self.scope_type: scope_type = self.scope_type.model_class() if scope_type == apps.get_model('dcim', 'region'): self._region = self.scope elif scope_type == apps.get_model('dcim', 'sitegroup'): - self._sitegroup = self.scope + self._site_group = self.scope elif scope_type == apps.get_model('dcim', 'site'): self._region = self.scope.region - self._sitegroup = self.scope.group + self._site_group = self.scope.group self._site = self.scope elif scope_type == apps.get_model('dcim', 'location'): self._region = self.scope.site.region - self._sitegroup = self.scope.site.group + self._site_group = self.scope.site.group self._site = self.scope.site self._location = self.scope cache_related_objects.alters_data = True diff --git a/netbox/virtualization/graphql/types.py b/netbox/virtualization/graphql/types.py index 4af31fc2e..2a22d1680 100644 --- a/netbox/virtualization/graphql/types.py +++ b/netbox/virtualization/graphql/types.py @@ -31,7 +31,7 @@ class ComponentType(NetBoxObjectType): @strawberry_django.type( models.Cluster, - exclude=('scope_type', 'scope_id', '_location', '_region', '_site', '_sitegroup'), + exclude=('scope_type', 'scope_id', '_location', '_region', '_site', '_site_group'), filters=ClusterFilter ) class ClusterType(VLANGroupsMixin, NetBoxObjectType): diff --git a/netbox/virtualization/migrations/0043_clusters_cached_relations.py b/netbox/virtualization/migrations/0043_clusters_cached_relations.py index 5b0407b3d..bf72fb89a 100644 --- a/netbox/virtualization/migrations/0043_clusters_cached_relations.py +++ b/netbox/virtualization/migrations/0043_clusters_cached_relations.py @@ -4,18 +4,18 @@ from django.db import migrations, models def populate_denormalized_fields(apps, schema_editor): """ - Copy site ForeignKey values to the scope GFK. + Copy the denormalized fields for _region, _site_group and _site from existing site field. """ Cluster = apps.get_model('virtualization', 'Cluster') clusters = Cluster.objects.filter(site__isnull=False).prefetch_related('site') for cluster in clusters: cluster._region_id = cluster.site.region_id - cluster._sitegroup_id = cluster.site.group_id + cluster._site_group_id = cluster.site.group_id cluster._site_id = cluster.site_id # Note: Location cannot be set prior to migration - Cluster.objects.bulk_update(clusters, ['_region', '_sitegroup', '_site']) + Cluster.objects.bulk_update(clusters, ['_region', '_site_group', '_site']) class Migration(migrations.Migration): @@ -60,7 +60,7 @@ class Migration(migrations.Migration): ), migrations.AddField( model_name='cluster', - name='_sitegroup', + name='_site_group', field=models.ForeignKey( blank=True, null=True,