diff options
| author | Johannes Hoppe <info@johanneshoppe.com> | 2017-05-10 14:48:57 +0200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2017-09-18 13:48:02 -0400 |
| commit | 94cd8efc50c717cd00244f4b2233f971a53b205e (patch) | |
| tree | ab1f13a12121907a561962181eaceeab793cb838 /tests/modeladmin/tests.py | |
| parent | 01a294f8f014a32e288958701540ea47dcb9fc14 (diff) | |
Fixed #14370 -- Allowed using a Select2 widget for ForeignKey and ManyToManyField in the admin.
Thanks Florian Apolloner and Tim Graham for review and
contributing to the patch.
Diffstat (limited to 'tests/modeladmin/tests.py')
| -rw-r--r-- | tests/modeladmin/tests.py | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/tests/modeladmin/tests.py b/tests/modeladmin/tests.py index 25b9dfed69..67bed3d697 100644 --- a/tests/modeladmin/tests.py +++ b/tests/modeladmin/tests.py @@ -7,14 +7,17 @@ from django.contrib.admin.options import ( get_content_type_for_model, ) from django.contrib.admin.sites import AdminSite -from django.contrib.admin.widgets import AdminDateWidget, AdminRadioSelect +from django.contrib.admin.widgets import ( + AdminDateWidget, AdminRadioSelect, AutocompleteSelect, + AutocompleteSelectMultiple, +) from django.contrib.auth.models import User from django.db import models from django.forms.widgets import Select from django.test import SimpleTestCase, TestCase from django.test.utils import isolate_apps -from .models import Band, Concert +from .models import Band, Concert, Song class MockRequest: @@ -638,6 +641,31 @@ class ModelAdminTests(TestCase): self.assertEqual(fetched.change_message, str(message)) self.assertEqual(fetched.object_repr, str(self.band)) + def test_get_autocomplete_fields(self): + class NameAdmin(ModelAdmin): + search_fields = ['name'] + + class SongAdmin(ModelAdmin): + autocomplete_fields = ['featuring'] + fields = ['featuring', 'band'] + + class OtherSongAdmin(SongAdmin): + def get_autocomplete_fields(self, request): + return ['band'] + + self.site.register(Band, NameAdmin) + try: + # Uses autocomplete_fields if not overridden. + model_admin = SongAdmin(Song, self.site) + form = model_admin.get_form(request)() + self.assertIsInstance(form.fields['featuring'].widget.widget, AutocompleteSelectMultiple) + # Uses overridden get_autocomplete_fields + model_admin = OtherSongAdmin(Song, self.site) + form = model_admin.get_form(request)() + self.assertIsInstance(form.fields['band'].widget.widget, AutocompleteSelect) + finally: + self.site.unregister(Band) + class ModelAdminPermissionTests(SimpleTestCase): |
