summaryrefslogtreecommitdiff
path: root/django/forms
diff options
context:
space:
mode:
authorRodrigo Vieira <rodrigo.vieira@gmail.com>2026-03-31 20:34:56 -0300
committerJacob Walls <jacobtylerwalls@gmail.com>2026-04-01 13:51:37 -0400
commit856c915326768962806705ca7733e4abbb8f794f (patch)
treefbadce8821a1d4dbd5e7aeba0a5b70f76463704e /django/forms
parent08aa1b5ac8fd95d165aad749f3ce29de4aa1be0d (diff)
Fixed #37004 -- Used QuerySet.totally_ordered in BaseModelFormSet.get_queryset() for stable ordering.
Diffstat (limited to 'django/forms')
-rw-r--r--django/forms/models.py5
1 files changed, 3 insertions, 2 deletions
diff --git a/django/forms/models.py b/django/forms/models.py
index 104369c0b0..a53f119995 100644
--- a/django/forms/models.py
+++ b/django/forms/models.py
@@ -776,8 +776,9 @@ class BaseModelFormSet(BaseFormSet, AltersData):
# If the queryset isn't already ordered we need to add an
# artificial ordering here to make sure that all formsets
# constructed from this queryset have the same form order.
- if not qs.ordered:
- qs = qs.order_by(self.model._meta.pk.name)
+ if not qs.totally_ordered:
+ current_ordering = qs.query.order_by or qs.model._meta.ordering or []
+ qs = qs.order_by(*current_ordering, "pk")
# Removed queryset limiting here. As per discussion re: #13023
# on django-dev, max_num should not prevent existing