summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Bronn <jbronn@gmail.com>2009-12-09 04:24:05 +0000
committerJustin Bronn <jbronn@gmail.com>2009-12-09 04:24:05 +0000
commit58c19c324b9d648ee8ae2d12efd4d102ce5096d2 (patch)
tree07763e03b8774890726ced9246b653bf273b14d9
parentb24bb6864938cdf32239e4dcfce0d89aaad8f8de (diff)
[1.1.X] Fixed #12340 -- `BaseGenericInlineFormSet.get_queryset` now returns an ordered queryset.
Backport of r11800 from trunk. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.1.X@11801 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/contrib/contenttypes/generic.py5
-rw-r--r--tests/regressiontests/generic_inline_admin/tests.py7
2 files changed, 10 insertions, 2 deletions
diff --git a/django/contrib/contenttypes/generic.py b/django/contrib/contenttypes/generic.py
index 4df48ff9f5..22a1e1bc4d 100644
--- a/django/contrib/contenttypes/generic.py
+++ b/django/contrib/contenttypes/generic.py
@@ -319,10 +319,13 @@ class BaseGenericInlineFormSet(BaseModelFormSet):
from django.contrib.contenttypes.models import ContentType
if self.instance is None or self.instance.pk is None:
return self.model._default_manager.none()
- return self.model._default_manager.filter(**{
+ qs = self.model._default_manager.filter(**{
self.ct_field.name: ContentType.objects.get_for_model(self.instance),
self.ct_fk_field.name: self.instance.pk,
})
+ if not qs.ordered:
+ qs = qs.order_by(self.model._meta.pk.name)
+ return qs
def save_new(self, form, commit=True):
# Avoid a circular import.
diff --git a/tests/regressiontests/generic_inline_admin/tests.py b/tests/regressiontests/generic_inline_admin/tests.py
index 60a370fb2d..d28cd16e1d 100644
--- a/tests/regressiontests/generic_inline_admin/tests.py
+++ b/tests/regressiontests/generic_inline_admin/tests.py
@@ -81,6 +81,11 @@ class GenericAdminViewTest(TestCase):
inline_formset = generic_inlineformset_factory(Media,
exclude=('url',))
+ # Regression test for #12340.
+ e = Episode.objects.get(name='This Week in Django')
+ formset = inline_formset(instance=e)
+ self.failUnless(formset.get_queryset().ordered)
+
class GenericInlineAdminParametersTest(TestCase):
fixtures = ['users.xml']
@@ -139,4 +144,4 @@ class GenericInlineAdminParametersTest(TestCase):
e = self._create_object(EpisodeExclude)
response = self.client.get('/generic_inline_admin/admin/generic_inline_admin/episodeexclude/%s/' % e.pk)
formset = response.context['inline_admin_formsets'][0].formset
- self.failIf('url' in formset.forms[0], 'The formset has excluded "url" field.') \ No newline at end of file
+ self.failIf('url' in formset.forms[0], 'The formset has excluded "url" field.')