From dbd1a8bd41f827e5af2ca167bdcccfeeeecbd939 Mon Sep 17 00:00:00 2001 From: Madalin Popa Date: Sat, 8 Jun 2024 14:57:27 +0200 Subject: [5.1.x] Fixed #35488 -- Fixed BaseModelFormSet.validate_unique() crash due to unhashable type. Backport of d28626ecf8bd340084ed70ff2d88e8dbab001e2c from main. --- django/forms/models.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'django/forms/models.py') diff --git a/django/forms/models.py b/django/forms/models.py index 4cda4e534e..09be448984 100644 --- a/django/forms/models.py +++ b/django/forms/models.py @@ -23,6 +23,7 @@ from django.forms.widgets import ( SelectMultiple, ) from django.utils.choices import BaseChoiceIterator +from django.utils.hashable import make_hashable from django.utils.text import capfirst, get_text_list from django.utils.translation import gettext from django.utils.translation import gettext_lazy as _ @@ -834,8 +835,8 @@ class BaseModelFormSet(BaseFormSet, AltersData): ( d._get_pk_val() if hasattr(d, "_get_pk_val") - # Prevent "unhashable type: list" errors later on. - else tuple(d) if isinstance(d, list) else d + # Prevent "unhashable type" errors later on. + else make_hashable(d) ) for d in row_data ) -- cgit v1.3