diff options
| author | Brian Rosner <brosner@gmail.com> | 2010-03-31 07:43:52 +0000 |
|---|---|---|
| committer | Brian Rosner <brosner@gmail.com> | 2010-03-31 07:43:52 +0000 |
| commit | e58c75fbdfbc2f11a1d3d6fd949f7375199c6663 (patch) | |
| tree | 283005df8a976963e373681697dd362b6f9042c6 /tests | |
| parent | 7bdb9a90d06a955d0ad099f9b72e6c2c30cb89dc (diff) | |
Restored pre-r10062 behavior allowing None from formfield_callback to exclude itself from the form
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12891 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/modeltests/model_forms/models.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/modeltests/model_forms/models.py b/tests/modeltests/model_forms/models.py index 998f212fae..e7c4022f6f 100644 --- a/tests/modeltests/model_forms/models.py +++ b/tests/modeltests/model_forms/models.py @@ -220,6 +220,22 @@ class BigInt(models.Model): def __unicode__(self): return unicode(self.biggie) +class MarkupField(models.CharField): + def __init__(self, *args, **kwargs): + kwargs["max_length"] = 20 + super(MarkupField, self).__init__(*args, **kwargs) + + def formfield(self, **kwargs): + # don't allow this field to be used in form (real use-case might be + # that you know the markup will always be X, but it is among an app + # that allows the user to say it could be something else) + # regressed at r10062 + return None + +class CustomFieldForExclusionModel(models.Model): + name = models.CharField(max_length=10) + markup = MarkupField() + __test__ = {'API_TESTS': """ >>> from django import forms >>> from django.forms.models import ModelForm, model_to_dict @@ -1540,6 +1556,19 @@ ValidationError: [u'Select a valid choice. z is not one of the available choices <tr><th><label for="id_description">Description:</label></th><td><input type="text" name="description" id="id_description" /></td></tr> <tr><th><label for="id_url">The URL:</label></th><td><input id="id_url" type="text" name="url" maxlength="40" /></td></tr> +# Model field that returns None to exclude itself with explicit fields ######## + +>>> class CustomFieldForExclusionForm(ModelForm): +... class Meta: +... model = CustomFieldForExclusionModel +... fields = ['name', 'markup'] + +>>> CustomFieldForExclusionForm.base_fields.keys() +['name'] + +>>> print CustomFieldForExclusionForm() +<tr><th><label for="id_name">Name:</label></th><td><input id="id_name" type="text" name="name" maxlength="10" /></td></tr> + # Clean up >>> import shutil >>> shutil.rmtree(temp_storage_dir) |
