From b5b5ba6cd9179372cead3e6d19f732285e80b799 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Sat, 26 Feb 2011 12:44:25 +0000 Subject: [PATCH] Fixed #10918 -- Ensure that the search widget on a raw_id_admin uses the right field name when the ForeignKey has a to_field definition. Thanks to David Cramer for the report, Collin Anderson for the fix, and Julien Phalip for the test. git-svn-id: http://code.djangoproject.com/svn/django/trunk@15657 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/admin/views/main.py | 4 +--- tests/regressiontests/admin_views/tests.py | 10 ++++++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py index d0f0350407..635330f6a8 100644 --- a/django/contrib/admin/views/main.py +++ b/django/contrib/admin/views/main.py @@ -52,8 +52,6 @@ class ChangeList(object): self.params = dict(request.GET.items()) if PAGE_VAR in self.params: del self.params[PAGE_VAR] - if TO_FIELD_VAR in self.params: - del self.params[TO_FIELD_VAR] if ERROR_FLAG in self.params: del self.params[ERROR_FLAG] @@ -173,7 +171,7 @@ class ChangeList(object): qs = self.root_query_set lookup_params = self.params.copy() # a dictionary of the query string - for i in (ALL_VAR, ORDER_VAR, ORDER_TYPE_VAR, SEARCH_VAR, IS_POPUP_VAR): + for i in (ALL_VAR, ORDER_VAR, ORDER_TYPE_VAR, SEARCH_VAR, IS_POPUP_VAR, TO_FIELD_VAR): if i in lookup_params: del lookup_params[i] for key, value in lookup_params.items(): diff --git a/tests/regressiontests/admin_views/tests.py b/tests/regressiontests/admin_views/tests.py index 7782f9eab7..6be07b462d 100644 --- a/tests/regressiontests/admin_views/tests.py +++ b/tests/regressiontests/admin_views/tests.py @@ -1694,6 +1694,16 @@ class AdminSearchTest(TestCase): # confirm the search returned 1 object self.assertContains(response, "\n1 recommendation\n") + def test_with_fk_to_field(self): + """Ensure that the to_field GET parameter is preserved when a search + is performed. Refs #10918. + """ + from django.contrib.admin.views.main import TO_FIELD_VAR + response = self.client.get('/test_admin/admin/auth/user/?q=joe&%s=username' % TO_FIELD_VAR) + self.assertContains(response, "\n1 user\n") + self.assertContains(response, '') + + class AdminInheritedInlinesTest(TestCase): fixtures = ['admin-views-users.xml',]