mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
[1.7.x] Fixed #23795 -- Fixed a regression in custom form fields
Custom form fields having a `queryset` attribute but no
`limit_choices_to` could no longer be used in ModelForms.
Refs #2445.
Thanks to artscoop for the report.
Backport of bfb11b9562 from master.
Conflicts:
django/forms/fields.py
This commit is contained in:
@@ -2345,6 +2345,17 @@ class StumpJokeForm(forms.ModelForm):
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class CustomFieldWithQuerysetButNoLimitChoicesTo(forms.Field):
|
||||
queryset = 42
|
||||
|
||||
|
||||
class StumpJokeWithCustomFieldForm(forms.ModelForm):
|
||||
custom = CustomFieldWithQuerysetButNoLimitChoicesTo()
|
||||
class Meta:
|
||||
model = StumpJoke
|
||||
fields = () # We don't need any fields from the model
|
||||
|
||||
|
||||
class LimitChoicesToTest(TestCase):
|
||||
"""
|
||||
Tests the functionality of ``limit_choices_to``.
|
||||
@@ -2375,6 +2386,14 @@ class LimitChoicesToTest(TestCase):
|
||||
self.assertIn(self.threepwood, stumpjokeform.fields['has_fooled_today'].queryset)
|
||||
self.assertNotIn(self.marley, stumpjokeform.fields['has_fooled_today'].queryset)
|
||||
|
||||
def test_custom_field_with_queryset_but_no_limit_choices_to(self):
|
||||
"""
|
||||
Regression test for #23795: Make sure a custom field with a `queryset`
|
||||
attribute but no `limit_choices_to` still works.
|
||||
"""
|
||||
f = StumpJokeWithCustomFieldForm()
|
||||
self.assertEqual(f.fields['custom'].queryset, 42)
|
||||
|
||||
|
||||
class FormFieldCallbackTests(TestCase):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user