mirror of
https://github.com/django/django.git
synced 2025-07-28 15:44:20 +00:00
Fixed #8620 -- Updated the Form metaclass to support excluding fields by shadowing them.
This commit is contained in:
parent
ac5ec7b8bc
commit
b16dd1fe01
5 changed files with 52 additions and 0 deletions
|
@ -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'])
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue