diff --git a/netbox/ipam/graphql/types.py b/netbox/ipam/graphql/types.py index 0563683f1..9b3becc17 100644 --- a/netbox/ipam/graphql/types.py +++ b/netbox/ipam/graphql/types.py @@ -291,7 +291,7 @@ class VLANTranslationPolicyType(NetBoxObjectType): filters=VLANTranslationRuleFilter ) class VLANTranslationRuleType(NetBoxObjectType): - policy: Annotated["VLANTranslationPolicyType", strawberry.lazy('ipam.graphql.types')] + policy: Annotated["VLANTranslationPolicyType", strawberry.lazy('ipam.graphql.types')] | None @strawberry_django.type( diff --git a/netbox/ipam/migrations/0074_vlantranslationpolicy_vlantranslationrule.py b/netbox/ipam/migrations/0074_vlantranslationpolicy_vlantranslationrule.py index 4b35ea9e7..d791ed9a5 100644 --- a/netbox/ipam/migrations/0074_vlantranslationpolicy_vlantranslationrule.py +++ b/netbox/ipam/migrations/0074_vlantranslationpolicy_vlantranslationrule.py @@ -42,7 +42,7 @@ class Migration(migrations.Migration): ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder)), ('local_vid', models.PositiveSmallIntegerField(validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(4094)])), ('remote_vid', models.PositiveSmallIntegerField(validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(4094)])), - ('policy', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rules', to='ipam.vlantranslationpolicy')), + ('policy', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rules', to='ipam.vlantranslationpolicy')), ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), ], options={ diff --git a/netbox/ipam/models/vlans.py b/netbox/ipam/models/vlans.py index 56c7b7a81..3123b32be 100644 --- a/netbox/ipam/models/vlans.py +++ b/netbox/ipam/models/vlans.py @@ -297,7 +297,8 @@ class VLANTranslationRule(NetBoxModel): policy = models.ForeignKey( to=VLANTranslationPolicy, related_name='rules', - on_delete=models.CASCADE, + on_delete=models.SET_NULL, + null=True, ) local_vid = models.PositiveSmallIntegerField( verbose_name=_('Local VLAN ID'),