diff --git a/django_translatable_fields/serializers.py b/django_translatable_fields/serializers.py index 745dd9b..6e1183d 100644 --- a/django_translatable_fields/serializers.py +++ b/django_translatable_fields/serializers.py @@ -322,12 +322,28 @@ class TranslatableField(serializers.Field): if isinstance(data, dict): return data else: + # Try to parse as JSON dict (e.g. from multipart form data) + if isinstance(data, str): + try: + parsed = json.loads(data) + if isinstance(parsed, dict): + return parsed + except (json.JSONDecodeError, ValueError): + pass return {language: str(data)} else: # No language: expect full translation dict or assume English if isinstance(data, dict): return data else: + # Try to parse as JSON dict (e.g. from multipart form data) + if isinstance(data, str): + try: + parsed = json.loads(data) + if isinstance(parsed, dict): + return parsed + except (json.JSONDecodeError, ValueError): + pass return {'en': str(data)}