From 3b58d4f234a088557ba0417115a81f15c412d54b Mon Sep 17 00:00:00 2001 From: Ricardo Dahis Date: Wed, 1 Apr 2026 13:43:44 +1100 Subject: [PATCH] fix(graphql): register convert_form_field for ModelMultipleChoiceField M2M fields (organizations, themes, tags) were silently dropped from mutation inputs because graphene-django had no converter for ModelMultipleChoiceField. Register it to produce List(ID), enabling form.save_m2m() to persist the relationships. --- backend/custom/graphql_auto.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/backend/custom/graphql_auto.py b/backend/custom/graphql_auto.py index 7b021d4d..3a8cc40f 100644 --- a/backend/custom/graphql_auto.py +++ b/backend/custom/graphql_auto.py @@ -12,7 +12,7 @@ from django.apps import apps from django.core.exceptions import ValidationError from django.db import models -from django.forms import ModelForm, modelform_factory +from django.forms import ModelForm, ModelMultipleChoiceField, modelform_factory from django.forms import fields as forms_fields from graphene import ( ID, @@ -502,3 +502,8 @@ def generate_form_fields(model: BaseModel): @convert_django_field.register(models.FileField) def convert_file_to_url(field, registry=None): return FileFieldScalar(description=field.help_text, required=not field.null) + + +@convert_form_field.register(ModelMultipleChoiceField) +def convert_form_field_to_list_of_id(field): + return List(ID, description=field.help_text, required=field.required)