summaryrefslogtreecommitdiff
path: root/django/core/serializers/python.py
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2020-05-24 14:14:49 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-05-25 10:45:16 +0200
commitadf58311b84f2aa92ca57661a8ba8679481ac930 (patch)
tree7626022aa95a41732508012c206e733511cf51bb /django/core/serializers/python.py
parentb547c426612354536ab884d59661b0d3ef70c0c1 (diff)
Fixed #29078 -- Made serializers respect prefetch_related() for m2m fields.
Diffstat (limited to 'django/core/serializers/python.py')
-rw-r--r--django/core/serializers/python.py8
1 files changed, 5 insertions, 3 deletions
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