diff options
| author | Jacob Kaplan-Moss <jacob@jacobian.org> | 2009-04-08 18:53:55 +0000 |
|---|---|---|
| committer | Jacob Kaplan-Moss <jacob@jacobian.org> | 2009-04-08 18:53:55 +0000 |
| commit | a64a61bf4a21f942828add0b7964f18cf777a5bb (patch) | |
| tree | 8d1261875cdbeb29534b505a65fc8897a272a81b | |
| parent | 98ef7e85bdaad4b21c31b425a62b2c8bc294be48 (diff) | |
Fixed #8422: FilePathField now respects required=False.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10447 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/forms/fields.py | 9 | ||||
| -rw-r--r-- | tests/regressiontests/model_forms_regress/models.py | 13 |
2 files changed, 21 insertions, 1 deletions
diff --git a/django/forms/fields.py b/django/forms/fields.py index 9c4084450a..bd4f3d4a80 100644 --- a/django/forms/fields.py +++ b/django/forms/fields.py @@ -829,9 +829,15 @@ class FilePathField(ChoiceField): super(FilePathField, self).__init__(choices=(), required=required, widget=widget, label=label, initial=initial, help_text=help_text, *args, **kwargs) - self.choices = [] + + if self.required: + self.choices = [] + else: + self.choices = [("", "---------")] + if self.match is not None: self.match_re = re.compile(self.match) + if recursive: for root, dirs, files in os.walk(self.path): for f in files: @@ -846,6 +852,7 @@ class FilePathField(ChoiceField): self.choices.append((full_file, f)) except OSError: pass + self.widget.choices = self.choices class SplitDateTimeField(MultiValueField): diff --git a/tests/regressiontests/model_forms_regress/models.py b/tests/regressiontests/model_forms_regress/models.py index dedbed7179..fc587202d6 100644 --- a/tests/regressiontests/model_forms_regress/models.py +++ b/tests/regressiontests/model_forms_regress/models.py @@ -1,3 +1,4 @@ +import os from django.db import models from django import forms @@ -12,6 +13,9 @@ class Triple(models.Model): class Meta: unique_together = (('left', 'middle'), ('middle', 'right')) +class FilePathModel(models.Model): + path = models.FilePathField(path=os.path.dirname(__file__), match=".*\.py$", blank=True) + __test__ = {'API_TESTS': """ When the same field is involved in multiple unique_together constraints, we need to make sure we don't remove the data for it before doing all the @@ -28,5 +32,14 @@ False >>> form = TripleForm({'left': '1', 'middle': '3', 'right': '1'}) >>> form.is_valid() True + +# Regression test for #8842: FilePathField(blank=True) +>>> class FPForm(forms.ModelForm): +... class Meta: +... model = FilePathModel + +>>> form = FPForm() +>>> [c[1] for c in form['path'].field.choices] +['---------', '__init__.py', 'models.py'] """} |
