diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-06-04 20:49:07 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-06-04 20:49:40 +0200 |
| commit | 87a4cd559bc47a53c717a45a8b0a181681fe8a32 (patch) | |
| tree | 75ef2bc7dbaec6b4eae27344ba093164b341d5fe /django | |
| parent | 66d9fa43718461de1d083650a4fee1b16ba80f91 (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.py | 4 | ||||
| -rw-r--r-- | django/core/serializers/xml_serializer.py | 4 |
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, |
