From adf58311b84f2aa92ca57661a8ba8679481ac930 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Sun, 24 May 2020 14:14:49 +0200 Subject: Fixed #29078 -- Made serializers respect prefetch_related() for m2m fields. --- django/core/serializers/python.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'django/core/serializers/python.py') diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py index 5a5d8a7036..0ceb676e90 100644 --- a/django/core/serializers/python.py +++ b/django/core/serializers/python.py @@ -67,9 +67,11 @@ class Serializer(base.Serializer): else: def m2m_value(value): return self._value_from_field(value, value._meta.pk) - self._current[field.name] = [ - m2m_value(related) for related in getattr(obj, field.name).iterator() - ] + m2m_iter = getattr(obj, '_prefetched_objects_cache', {}).get( + field.name, + getattr(obj, field.name).iterator(), + ) + self._current[field.name] = [m2m_value(related) for related in m2m_iter] def getvalue(self): return self.objects -- cgit v1.3