Fixed #15673 -- Allow limit_choices_to to use a tuple for __in filters. Thanks, EnTeQuAk.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16078 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Jannis Leidel 2011-04-22 12:03:50 +00:00
parent 7478aeb0a7
commit 4da29717fd
2 changed files with 9 additions and 2 deletions

View File

@ -99,7 +99,7 @@ def url_params_from_lookup_dict(lookups):
if lookups and hasattr(lookups, 'items'): if lookups and hasattr(lookups, 'items'):
items = [] items = []
for k, v in lookups.items(): for k, v in lookups.items():
if isinstance(v, list): if isinstance(v, (tuple, list)):
v = u','.join([str(x) for x in v]) v = u','.join([str(x) for x in v])
elif isinstance(v, bool): elif isinstance(v, bool):
# See django.db.fields.BooleanField.get_prep_lookup # See django.db.fields.BooleanField.get_prep_lookup

View File

@ -8,7 +8,8 @@ from django.contrib import admin
from django.contrib.admin import widgets from django.contrib.admin import widgets
from django.contrib.admin.widgets import (FilteredSelectMultiple, from django.contrib.admin.widgets import (FilteredSelectMultiple,
AdminSplitDateTime, AdminFileWidget, ForeignKeyRawIdWidget, AdminRadioSelect, AdminSplitDateTime, AdminFileWidget, ForeignKeyRawIdWidget, AdminRadioSelect,
RelatedFieldWidgetWrapper, ManyToManyRawIdWidget) RelatedFieldWidgetWrapper, ManyToManyRawIdWidget,
url_params_from_lookup_dict)
from django.core.files.storage import default_storage from django.core.files.storage import default_storage
from django.core.files.uploadedfile import SimpleUploadedFile from django.core.files.uploadedfile import SimpleUploadedFile
from django.db.models import DateField from django.db.models import DateField
@ -180,6 +181,12 @@ class AdminForeignKeyRawIdWidget(DjangoTestCase):
self.assertContains(response, self.assertContains(response,
'Select a valid choice. That choice is not one of the available choices.') 'Select a valid choice. That choice is not one of the available choices.')
def test_url_params_from_lookup_dict_any_iterable(self):
lookup1 = url_params_from_lookup_dict({'color__in': ('red', 'blue')})
lookup2 = url_params_from_lookup_dict({'color__in': ['red', 'blue']})
self.assertEqual(lookup1, {'color__in': 'red,blue'})
self.assertEqual(lookup1, lookup2)
class FilteredSelectMultipleWidgetTest(TestCase): class FilteredSelectMultipleWidgetTest(TestCase):
def test_render(self): def test_render(self):