diff --git a/tests/model_forms/tests.py b/tests/model_forms/tests.py index 4f7fc2c1c0..fd043d3d03 100644 --- a/tests/model_forms/tests.py +++ b/tests/model_forms/tests.py @@ -26,7 +26,7 @@ from django.test import SimpleTestCase, TestCase, ignore_warnings, skipUnlessDBF from django.test.utils import isolate_apps from django.utils.choices import BlankChoiceIterator from django.utils.deprecation import RemovedInDjango60Warning -from django.utils.version import PYPY +from django.utils.version import PY314, PYPY from .models import ( Article, @@ -3048,10 +3048,11 @@ class OtherModelFormTests(TestCase): return ", ".join(c.name for c in obj.colours.all()) field = ColorModelChoiceField(ColourfulItem.objects.prefetch_related("colours")) - # CPython calls ModelChoiceField.__len__() when coercing to tuple. PyPy - # doesn't call __len__() and so .count() isn't called on the QuerySet. - # The following would trigger an extra query if prefetch were ignored. - with self.assertNumQueries(2 if PYPY else 3): + # CPython < 3.14 calls ModelChoiceField.__len__() when coercing to + # tuple. PyPy and Python 3.14+ don't call __len__() and so .count() + # isn't called on the QuerySet. The following would trigger an extra + # query if prefetch were ignored. + with self.assertNumQueries(2 if PYPY or PY314 else 3): self.assertEqual( tuple(field.choices), (