11933 saved filters clone of content-types and add m2m field cloning

This commit is contained in:
Arthur 2023-03-20 15:04:56 -07:00
parent 8d25d7812c
commit 2fa87131cb
2 changed files with 9 additions and 4 deletions

View File

@ -406,7 +406,7 @@ class SavedFilter(CloningMixin, ExportTemplatesMixin, WebhooksMixin, ChangeLogge
parameters = models.JSONField() parameters = models.JSONField()
clone_fields = ( clone_fields = (
'enabled', 'weight', 'content_types', 'weight', 'enabled', 'parameters',
) )
class Meta: class Meta:

View File

@ -110,6 +110,11 @@ class CloningMixin(models.Model):
for field_name in getattr(self, 'clone_fields', []): for field_name in getattr(self, 'clone_fields', []):
field = self._meta.get_field(field_name) field = self._meta.get_field(field_name)
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) field_value = field.value_from_object(self)
if field_value not in (None, ''): if field_value not in (None, ''):
attrs[field_name] = field_value attrs[field_name] = field_value