mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #19733 - deprecated ModelForms without 'fields' or 'exclude', and added '__all__' shortcut
This also updates all dependent functionality, including modelform_factory and modelformset_factory, and the generic views `ModelFormMixin`, `CreateView` and `UpdateView` which gain a new `fields` attribute.
This commit is contained in:
@@ -13,8 +13,8 @@ from .models import User, UserSite, Restaurant, Manager, Network, Host
|
||||
class InlineFormsetTests(TestCase):
|
||||
def test_formset_over_to_field(self):
|
||||
"A formset over a ForeignKey with a to_field can be saved. Regression for #10243"
|
||||
Form = modelform_factory(User)
|
||||
FormSet = inlineformset_factory(User, UserSite)
|
||||
Form = modelform_factory(User, fields="__all__")
|
||||
FormSet = inlineformset_factory(User, UserSite, fields="__all__")
|
||||
|
||||
# Instantiate the Form and FormSet to prove
|
||||
# you can create a form with no data
|
||||
@@ -89,8 +89,8 @@ class InlineFormsetTests(TestCase):
|
||||
|
||||
def test_formset_over_inherited_model(self):
|
||||
"A formset over a ForeignKey with a to_field can be saved. Regression for #11120"
|
||||
Form = modelform_factory(Restaurant)
|
||||
FormSet = inlineformset_factory(Restaurant, Manager)
|
||||
Form = modelform_factory(Restaurant, fields="__all__")
|
||||
FormSet = inlineformset_factory(Restaurant, Manager, fields="__all__")
|
||||
|
||||
# Instantiate the Form and FormSet to prove
|
||||
# you can create a form with no data
|
||||
@@ -156,8 +156,8 @@ class InlineFormsetTests(TestCase):
|
||||
|
||||
def test_formset_with_none_instance(self):
|
||||
"A formset with instance=None can be created. Regression for #11872"
|
||||
Form = modelform_factory(User)
|
||||
FormSet = inlineformset_factory(User, UserSite)
|
||||
Form = modelform_factory(User, fields="__all__")
|
||||
FormSet = inlineformset_factory(User, UserSite, fields="__all__")
|
||||
|
||||
# Instantiate the Form and FormSet to prove
|
||||
# you can create a formset with an instance of None
|
||||
@@ -182,7 +182,7 @@ class InlineFormsetTests(TestCase):
|
||||
efnet = Network.objects.create(name="EFNet")
|
||||
host1 = Host.objects.create(hostname="irc.he.net", network=efnet)
|
||||
|
||||
HostFormSet = inlineformset_factory(Network, Host)
|
||||
HostFormSet = inlineformset_factory(Network, Host, fields="__all__")
|
||||
|
||||
# Add a new host, modify previous host, and save-as-new
|
||||
data = {
|
||||
@@ -208,7 +208,7 @@ class InlineFormsetTests(TestCase):
|
||||
def test_initial_data(self):
|
||||
user = User.objects.create(username="bibi", serial=1)
|
||||
UserSite.objects.create(user=user, data=7)
|
||||
FormSet = inlineformset_factory(User, UserSite, extra=2)
|
||||
FormSet = inlineformset_factory(User, UserSite, extra=2, fields="__all__")
|
||||
|
||||
formset = FormSet(instance=user, initial=[{'data': 41}, {'data': 42}])
|
||||
self.assertEqual(formset.forms[0].initial['data'], 7)
|
||||
@@ -221,7 +221,7 @@ class FormsetTests(TestCase):
|
||||
'''
|
||||
Test the type of Formset and Form error attributes
|
||||
'''
|
||||
Formset = modelformset_factory(User)
|
||||
Formset = modelformset_factory(User, fields="__all__")
|
||||
data = {
|
||||
'form-TOTAL_FORMS': '2',
|
||||
'form-INITIAL_FORMS': '0',
|
||||
@@ -244,14 +244,14 @@ class FormsetTests(TestCase):
|
||||
|
||||
def test_initial_data(self):
|
||||
User.objects.create(username="bibi", serial=1)
|
||||
Formset = modelformset_factory(User, extra=2)
|
||||
Formset = modelformset_factory(User, fields="__all__", extra=2)
|
||||
formset = Formset(initial=[{'username': 'apollo11'}, {'username': 'apollo12'}])
|
||||
self.assertEqual(formset.forms[0].initial['username'], "bibi")
|
||||
self.assertEqual(formset.extra_forms[0].initial['username'], "apollo11")
|
||||
self.assertTrue('value="apollo12"' in formset.extra_forms[1].as_p())
|
||||
|
||||
def test_extraneous_query_is_not_run(self):
|
||||
Formset = modelformset_factory(Network)
|
||||
Formset = modelformset_factory(Network, fields="__all__")
|
||||
data = {'test-TOTAL_FORMS': '1',
|
||||
'test-INITIAL_FORMS': '0',
|
||||
'test-MAX_NUM_FORMS': '',
|
||||
@@ -268,6 +268,7 @@ class CustomWidget(forms.widgets.TextInput):
|
||||
class UserSiteForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = UserSite
|
||||
fields = "__all__"
|
||||
widgets = {
|
||||
'id': CustomWidget,
|
||||
'data': CustomWidget,
|
||||
@@ -292,7 +293,7 @@ class FormfieldCallbackTests(TestCase):
|
||||
"""
|
||||
|
||||
def test_inlineformset_factory_default(self):
|
||||
Formset = inlineformset_factory(User, UserSite, form=UserSiteForm)
|
||||
Formset = inlineformset_factory(User, UserSite, form=UserSiteForm, fields="__all__")
|
||||
form = Formset().forms[0]
|
||||
self.assertTrue(isinstance(form['id'].field.widget, CustomWidget))
|
||||
self.assertTrue(isinstance(form['data'].field.widget, CustomWidget))
|
||||
@@ -315,7 +316,7 @@ class FormfieldCallbackTests(TestCase):
|
||||
def test_inlineformset_custom_callback(self):
|
||||
callback = Callback()
|
||||
inlineformset_factory(User, UserSite, form=UserSiteForm,
|
||||
formfield_callback=callback)
|
||||
formfield_callback=callback, fields="__all__")
|
||||
self.assertCallbackCalled(callback)
|
||||
|
||||
def test_modelformset_custom_callback(self):
|
||||
@@ -353,6 +354,7 @@ class FormfieldShouldDeleteFormTests(TestCase):
|
||||
""" A model form with a 'should_delete' method """
|
||||
class Meta:
|
||||
model = User
|
||||
fields = "__all__"
|
||||
|
||||
def should_delete(self):
|
||||
""" delete form if odd PK """
|
||||
|
||||
Reference in New Issue
Block a user