diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py index cdb3e0613..a70183b9f 100644 --- a/src/documents/serialisers.py +++ b/src/documents/serialisers.py @@ -714,15 +714,18 @@ class BatchedManyRelatedField(serializers.ManyRelatedField): pks.append(item) try: - found = {obj.pk: obj for obj in child.get_queryset().filter(pk__in=pks)} + # str() normalizes int vs string PKs — form data sends strings, JSON sends ints + found = { + str(obj.pk): obj for obj in child.get_queryset().filter(pk__in=pks) + } except (TypeError, ValueError): child.fail("incorrect_type", data_type=type(pks[0]).__name__) result = [] for pk in pks: - if pk not in found: + if str(pk) not in found: child.fail("does_not_exist", pk_value=pk) - result.append(found[pk]) + result.append(found[str(pk)]) return result