move logic from deserialize to to_internal_value

This commit is contained in:
Pieter Lambrecht 2022-09-28 10:39:20 +02:00
parent 6af1aae2e6
commit 291eebdba7
2 changed files with 7 additions and 2 deletions

View File

@ -69,6 +69,12 @@ class CustomFieldsDataField(Field):
"values." "values."
) )
for cf in self._get_custom_fields():
if cf.name in data.keys():
# Convert the mixed array of dict and id's into id's only
if cf.type == CustomFieldTypeChoices.TYPE_MULTIOBJECT:
data[cf.name] = [obj['id'] if isinstance(obj, dict) else obj for obj in data[cf.name]] or None
# If updating an existing instance, start with existing custom_field_data # If updating an existing instance, start with existing custom_field_data
if self.parent.instance: if self.parent.instance:
data = {**self.parent.instance.custom_field_data, **data} data = {**self.parent.instance.custom_field_data, **data}

View File

@ -293,9 +293,8 @@ class CustomField(CloningMixin, ExportTemplatesMixin, WebhooksMixin, ChangeLogge
model = self.object_type.model_class() model = self.object_type.model_class()
return model.objects.filter(pk=value).first() return model.objects.filter(pk=value).first()
if self.type == CustomFieldTypeChoices.TYPE_MULTIOBJECT: if self.type == CustomFieldTypeChoices.TYPE_MULTIOBJECT:
valueids = [obj['id'] if isinstance(obj, dict) else obj for obj in value] or None
model = self.object_type.model_class() model = self.object_type.model_class()
return model.objects.filter(pk__in=valueids) return model.objects.filter(pk__in=value)
return value return value
def to_form_field(self, set_initial=True, enforce_required=True, for_csv_import=False): def to_form_field(self, set_initial=True, enforce_required=True, for_csv_import=False):