summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorLoic Bistuer <loic.bistuer@gmail.com>2015-02-07 04:19:23 +0700
committerLoic Bistuer <loic.bistuer@gmail.com>2015-02-13 19:13:05 +0700
commit00a889167f6699d02cee50848750d8d0e110d41c (patch)
tree8e0a110eb77a8657be930b027543234e0d37da86 /tests
parente8cf4f8abec87b9da6ed8e5c8cf833af9b27f4dd (diff)
Fixed #24295 -- Allowed ModelForm meta to specify form field classes.
Thanks Carl Meyer and Markus Holtermann for the reviews.
Diffstat (limited to 'tests')
-rw-r--r--tests/model_forms/tests.py12
-rw-r--r--tests/model_formsets/tests.py18
2 files changed, 28 insertions, 2 deletions
diff --git a/tests/model_forms/tests.py b/tests/model_forms/tests.py
index f1cf77a6a6..fcc9d269ec 100644
--- a/tests/model_forms/tests.py
+++ b/tests/model_forms/tests.py
@@ -11,7 +11,7 @@ from django.core.exceptions import (
)
from django.core.files.uploadedfile import SimpleUploadedFile
from django.core.validators import ValidationError
-from django.db import connection
+from django.db import connection, models
from django.db.models.query import EmptyQuerySet
from django.forms.models import (
ModelFormMetaclass, construct_instance, fields_for_model, model_to_dict,
@@ -545,6 +545,9 @@ class FieldOverridesByFormMetaForm(forms.ModelForm):
)
}
}
+ field_classes = {
+ 'url': forms.URLField,
+ }
class TestFieldOverridesByFormMeta(TestCase):
@@ -588,7 +591,7 @@ class TestFieldOverridesByFormMeta(TestCase):
def test_error_messages_overrides(self):
form = FieldOverridesByFormMetaForm(data={
'name': 'Category',
- 'url': '/category/',
+ 'url': 'http://www.example.com/category/',
'slug': '!%#*@',
})
form.full_clean()
@@ -599,6 +602,11 @@ class TestFieldOverridesByFormMeta(TestCase):
]
self.assertEqual(form.errors, {'slug': error})
+ def test_field_type_overrides(self):
+ form = FieldOverridesByFormMetaForm()
+ self.assertIs(Category._meta.get_field('url').__class__, models.CharField)
+ self.assertIsInstance(form.fields['url'], forms.URLField)
+
class IncompleteCategoryFormWithFields(forms.ModelForm):
"""
diff --git a/tests/model_formsets/tests.py b/tests/model_formsets/tests.py
index 2d0380195b..217a1a1049 100644
--- a/tests/model_formsets/tests.py
+++ b/tests/model_formsets/tests.py
@@ -1431,3 +1431,21 @@ class TestModelFormsetOverridesTroughFormMeta(TestCase):
form = BookFormSet.form(data={'title': 'Foo ' * 30, 'author': author.id})
form.full_clean()
self.assertEqual(form.errors, {'title': ['Title too long!!']})
+
+ def test_modelformset_factory_field_class_overrides(self):
+ author = Author.objects.create(pk=1, name='Charles Baudelaire')
+ BookFormSet = modelformset_factory(Book, fields="__all__", field_classes={
+ 'title': forms.SlugField,
+ })
+ form = BookFormSet.form(data={'title': 'Foo ' * 30, 'author': author.id})
+ self.assertIs(Book._meta.get_field('title').__class__, models.CharField)
+ self.assertIsInstance(form.fields['title'], forms.SlugField)
+
+ def test_inlineformset_factory_field_class_overrides(self):
+ author = Author.objects.create(pk=1, name='Charles Baudelaire')
+ BookFormSet = inlineformset_factory(Author, Book, fields="__all__", field_classes={
+ 'title': forms.SlugField,
+ })
+ form = BookFormSet.form(data={'title': 'Foo ' * 30, 'author': author.id})
+ self.assertIs(Book._meta.get_field('title').__class__, models.CharField)
+ self.assertIsInstance(form.fields['title'], forms.SlugField)