diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index bda6c4348..2d2b28ee0 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -174,10 +174,13 @@ class SiteForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): def __init__(self, data=None, instance=None, *args, **kwargs): super().__init__(data=data, instance=instance, *args, **kwargs) + + self.fields['asns'].initial = self.instance.asns.all().values_list('id', flat=True) + + # Hide the ASN field if there is nothing there as this is deprecated if instance is None or \ (instance and (instance.asn is None or instance.asn == '')) or \ (data and (data.get('asn') is None or instance.get('asn')) == ''): - print(f'{instance}') if 'asn' in self.Meta.fieldsets[0][1]: site_fieldset = list(self.Meta.fieldsets[0][1]) index = site_fieldset.index('asn') @@ -189,6 +192,11 @@ class SiteForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): ) del self.fields['asn'] + def save(self, *args, **kwargs): + instance = super().save(*args, **kwargs) + instance.asns.set(self.cleaned_data['asns']) + return instance + class LocationForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): region = DynamicModelChoiceField( diff --git a/netbox/ipam/forms/models.py b/netbox/ipam/forms/models.py index aff071e5d..abf2aa4a1 100644 --- a/netbox/ipam/forms/models.py +++ b/netbox/ipam/forms/models.py @@ -129,6 +129,11 @@ class ASNForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): queryset=RIR.objects.all(), label='RIR', ) + sites = DynamicModelMultipleChoiceField( + queryset=Site.objects.all(), + label='Sites', + required=False + ) class Meta: model = ASN