diff options
author | marysia <maria.lowas@gmail.com> | 2016-05-03 14:33:18 +0200 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2016-05-07 19:52:45 -0400 |
commit | b9290b1d49538c1092b59c41e6046b11c25ecafb (patch) | |
tree | 7be99e94cac522e4a742a63ff726222d4ed645db /tests/admin_widgets/tests.py | |
parent | aec4f97555cbfc9d14d698f61d43a478f5911661 (diff) | |
download | django-b9290b1d49538c1092b59c41e6046b11c25ecafb.tar.gz |
Fixed #26449 -- Merged admin's FORMFIELD_FOR_DBFIELD_DEFAULTS with formfield_overrides.
Useful for overriding the DateTimeField widget.
Diffstat (limited to 'tests/admin_widgets/tests.py')
-rw-r--r-- | tests/admin_widgets/tests.py | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/tests/admin_widgets/tests.py b/tests/admin_widgets/tests.py index 9c3c7b09b0..42822006e6 100644 --- a/tests/admin_widgets/tests.py +++ b/tests/admin_widgets/tests.py @@ -15,7 +15,7 @@ from django.contrib.admin.tests import AdminSeleniumTestCase from django.contrib.auth.models import User from django.core.files.storage import default_storage from django.core.files.uploadedfile import SimpleUploadedFile -from django.db.models import CharField, DateField +from django.db.models import CharField, DateField, DateTimeField from django.test import SimpleTestCase, TestCase, override_settings from django.urls import reverse from django.utils import six, translation @@ -150,6 +150,28 @@ class AdminFormfieldForDBFieldTests(SimpleTestCase): self.assertEqual(f2.widget.attrs['maxlength'], '20') self.assertEqual(f2.widget.attrs['size'], '10') + def test_formfield_overrides_for_datetime_field(self): + """ + Overriding the widget for DateTimeField doesn't overrides the default + form_class for that field (#26449). + """ + class MemberAdmin(admin.ModelAdmin): + formfield_overrides = {DateTimeField: {'widget': widgets.AdminSplitDateTime}} + ma = MemberAdmin(models.Member, admin.site) + f1 = ma.formfield_for_dbfield(models.Member._meta.get_field('birthdate'), request=None) + self.assertIsInstance(f1.widget, widgets.AdminSplitDateTime) + self.assertIsInstance(f1, forms.SplitDateTimeField) + + def test_formfield_overrides_for_custom_field(self): + """ + formfield_overrides works for a custom field class. + """ + class AlbumAdmin(admin.ModelAdmin): + formfield_overrides = {models.MyFileField: {'widget': forms.TextInput()}} + ma = AlbumAdmin(models.Member, admin.site) + f1 = ma.formfield_for_dbfield(models.Album._meta.get_field('backside_art'), request=None) + self.assertIsInstance(f1.widget, forms.TextInput) + def test_field_with_choices(self): self.assertFormfield(models.Member, 'gender', forms.Select) |