diff options
| author | Loic Bistuer <loic.bistuer@sixmedia.com> | 2013-10-14 22:42:33 +0700 |
|---|---|---|
| committer | Loic Bistuer <loic.bistuer@sixmedia.com> | 2013-10-14 22:42:33 +0700 |
| commit | b16dd1fe019b38d0dcdf4a400e9377fb06b33178 (patch) | |
| tree | 2c2a2da6a25b531bf7f3894938a77565a9a7250d /tests | |
| parent | ac5ec7b8bcc5623cc05d4df900c39e194f5affcf (diff) | |
Fixed #8620 -- Updated the Form metaclass to support excluding fields by shadowing them.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/model_forms/tests.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/model_forms/tests.py b/tests/model_forms/tests.py index 67aedd06d0..2f94f64128 100644 --- a/tests/model_forms/tests.py +++ b/tests/model_forms/tests.py @@ -1815,3 +1815,26 @@ class ModelFormInheritanceTests(TestCase): fields = '__all__' self.assertEqual(list(ModelForm().fields.keys()), ['name', 'age']) + + def test_field_shadowing(self): + class ModelForm(forms.ModelForm): + class Meta: + model = Writer + fields = '__all__' + + class Mixin(object): + age = None + + class Form(forms.Form): + age = forms.IntegerField() + + class Form2(forms.Form): + foo = forms.IntegerField() + + self.assertEqual(list(ModelForm().fields.keys()), ['name']) + self.assertEqual(list(type(str('NewForm'), (Mixin, Form), {})().fields.keys()), []) + self.assertEqual(list(type(str('NewForm'), (Form2, Mixin, Form), {})().fields.keys()), ['foo']) + self.assertEqual(list(type(str('NewForm'), (Mixin, ModelForm, Form), {})().fields.keys()), ['name']) + self.assertEqual(list(type(str('NewForm'), (ModelForm, Mixin, Form), {})().fields.keys()), ['name']) + self.assertEqual(list(type(str('NewForm'), (ModelForm, Form, Mixin), {})().fields.keys()), ['name', 'age']) + self.assertEqual(list(type(str('NewForm'), (ModelForm, Form), {'age': None})().fields.keys()), ['name']) |
