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,
|
super(FilePathField, self).__init__(choices=(), required=required,
|
||||||
widget=widget, label=label, initial=initial, help_text=help_text,
|
widget=widget, label=label, initial=initial, help_text=help_text,
|
||||||
*args, **kwargs)
|
*args, **kwargs)
|
||||||
self.choices = []
|
|
||||||
|
if self.required:
|
||||||
|
self.choices = []
|
||||||
|
else:
|
||||||
|
self.choices = [("", "---------")]
|
||||||
|
|
||||||
if self.match is not None:
|
if self.match is not None:
|
||||||
self.match_re = re.compile(self.match)
|
self.match_re = re.compile(self.match)
|
||||||
|
|
||||||
if recursive:
|
if recursive:
|
||||||
for root, dirs, files in os.walk(self.path):
|
for root, dirs, files in os.walk(self.path):
|
||||||
for f in files:
|
for f in files:
|
||||||
|
@ -846,6 +852,7 @@ class FilePathField(ChoiceField):
|
||||||
self.choices.append((full_file, f))
|
self.choices.append((full_file, f))
|
||||||
except OSError:
|
except OSError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
self.widget.choices = self.choices
|
self.widget.choices = self.choices
|
||||||
|
|
||||||
class SplitDateTimeField(MultiValueField):
|
class SplitDateTimeField(MultiValueField):
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import os
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django import forms
|
from django import forms
|
||||||
|
|
||||||
|
@ -12,6 +13,9 @@ class Triple(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
unique_together = (('left', 'middle'), ('middle', 'right'))
|
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': """
|
__test__ = {'API_TESTS': """
|
||||||
When the same field is involved in multiple unique_together constraints, we
|
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
|
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 = TripleForm({'left': '1', 'middle': '3', 'right': '1'})
|
||||||
>>> form.is_valid()
|
>>> form.is_valid()
|
||||||
True
|
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