summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2023-06-04 20:49:07 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-06-04 20:49:40 +0200
commit87a4cd559bc47a53c717a45a8b0a181681fe8a32 (patch)
tree75ef2bc7dbaec6b4eae27344ba093164b341d5fe /django
parent66d9fa43718461de1d083650a4fee1b16ba80f91 (diff)
[4.2.x] Fixed #34620 -- Fixed serialization crash on m2m fields without natural keys when base querysets use select_related().
Regression in 19e0587ee596debf77540d6a08ccb6507e60b6a7. Thanks Martin Svoboda for the report. Backport of f9936deed1ff13b20e18bd9ca2b0750b52706b6c from main
Diffstat (limited to 'django')
-rw-r--r--django/core/serializers/python.py4
-rw-r--r--django/core/serializers/xml_serializer.py4
2 files changed, 6 insertions, 2 deletions
diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py
index 36048601af..0dc504aa34 100644
--- a/django/core/serializers/python.py
+++ b/django/core/serializers/python.py
@@ -79,7 +79,9 @@ class Serializer(base.Serializer):
return self._value_from_field(value, value._meta.pk)
def queryset_iterator(obj, field):
- return getattr(obj, field.name).only("pk").iterator()
+ return (
+ getattr(obj, field.name).select_related().only("pk").iterator()
+ )
m2m_iter = getattr(obj, "_prefetched_objects_cache", {}).get(
field.name,
diff --git a/django/core/serializers/xml_serializer.py b/django/core/serializers/xml_serializer.py
index 1d3269c41a..e0129a59bb 100644
--- a/django/core/serializers/xml_serializer.py
+++ b/django/core/serializers/xml_serializer.py
@@ -155,7 +155,9 @@ class Serializer(base.Serializer):
self.xml.addQuickElement("object", attrs={"pk": str(value.pk)})
def queryset_iterator(obj, field):
- return getattr(obj, field.name).only("pk").iterator()
+ return (
+ getattr(obj, field.name).select_related().only("pk").iterator()
+ )
m2m_iter = getattr(obj, "_prefetched_objects_cache", {}).get(
field.name,