mirror of https://github.com/django/django.git
Fixed #8422: FilePathField now respects required=False.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10447 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
98ef7e85bd
commit
a64a61bf4a
|
@ -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):
|
||||
|
|
|
@ -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']
|
||||
"""}
|
||||
|
||||
|
|
Loading…
Reference in New Issue