From 94ba9256e741291f59bef8cf0641b3a72e1c0024 Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Tue, 21 Apr 2026 10:31:48 -0700 Subject: [PATCH] Normalize to strings to handle form encoded data --- src/documents/serialisers.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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