Commit a64a61bf authored by Jacob Kaplan-Moss's avatar Jacob Kaplan-Moss
Browse files

Fixed #8422: FilePathField now respects required=False.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@10447 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 98ef7e85
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -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)
            
        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):
+13 −0
Original line number Diff line number Diff line
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']
"""}