From 856c915326768962806705ca7733e4abbb8f794f Mon Sep 17 00:00:00 2001 From: Rodrigo Vieira Date: Tue, 31 Mar 2026 20:34:56 -0300 Subject: Fixed #37004 -- Used QuerySet.totally_ordered in BaseModelFormSet.get_queryset() for stable ordering. --- django/forms/models.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'django/forms') 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 -- cgit v1.3