diff --git a/netbox/extras/models/models.py b/netbox/extras/models/models.py index e608f81b1..fb443e799 100644 --- a/netbox/extras/models/models.py +++ b/netbox/extras/models/models.py @@ -406,7 +406,7 @@ class SavedFilter(CloningMixin, ExportTemplatesMixin, WebhooksMixin, ChangeLogge parameters = models.JSONField() clone_fields = ( - 'enabled', 'weight', + 'content_types', 'weight', 'enabled', 'parameters', ) class Meta: diff --git a/netbox/netbox/models/features.py b/netbox/netbox/models/features.py index 62482a26f..317ecc6eb 100644 --- a/netbox/netbox/models/features.py +++ b/netbox/netbox/models/features.py @@ -110,9 +110,14 @@ class CloningMixin(models.Model): for field_name in getattr(self, 'clone_fields', []): field = self._meta.get_field(field_name) - field_value = field.value_from_object(self) - if field_value not in (None, ''): - attrs[field_name] = field_value + if isinstance(field, models.ManyToManyField): + m2m = getattr(self, field.name) + if m2m: + attrs[field_name] = [f.pk for f in m2m.all()] + else: + field_value = field.value_from_object(self) + if field_value not in (None, ''): + attrs[field_name] = field_value # Include tags (if applicable) if is_taggable(self):