mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #8620 -- Updated the Form metaclass to support excluding fields by shadowing them.
This commit is contained in:
@@ -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'])
|
||||
|
||||
Reference in New Issue
Block a user