summaryrefslogtreecommitdiff
path: root/django/contrib/postgres/forms/ranges.py
diff options
context:
space:
mode:
authorNg Zhi An <ngzhian@gmail.com>2015-01-18 02:20:42 +0000
committerNg Zhi An <ngzhian@gmail.com>2015-01-22 19:36:15 +0000
commit4669b6a807811d6763b9fdc5df974cb67aa1fb56 (patch)
tree18b1d7b8c069771c299866f977d5a309459e5650 /django/contrib/postgres/forms/ranges.py
parent38c17871bb6dafd489367f6fe8bc56199223adb8 (diff)
downloaddjango-4669b6a807811d6763b9fdc5df974cb67aa1fb56.tar.gz
Fixed #24170 -- Implemented decompress for BaseRangeField widgets
Diffstat (limited to 'django/contrib/postgres/forms/ranges.py')
-rw-r--r--django/contrib/postgres/forms/ranges.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/django/contrib/postgres/forms/ranges.py b/django/contrib/postgres/forms/ranges.py
index 4f8989a96d..23db4fe514 100644
--- a/django/contrib/postgres/forms/ranges.py
+++ b/django/contrib/postgres/forms/ranges.py
@@ -1,5 +1,6 @@
from django.core import exceptions
from django import forms
+from django.forms.widgets import MultiWidget
from django.utils.translation import ugettext_lazy as _
from psycopg2.extras import NumericRange, DateRange, DateTimeTZRange
@@ -15,8 +16,7 @@ class BaseRangeField(forms.MultiValueField):
}
def __init__(self, **kwargs):
- widget = forms.MultiWidget([self.base_field.widget, self.base_field.widget])
- kwargs.setdefault('widget', widget)
+ kwargs.setdefault('widget', RangeWidget(self.base_field.widget))
kwargs.setdefault('fields', [self.base_field(required=False), self.base_field(required=False)])
kwargs.setdefault('required', False)
kwargs.setdefault('require_all_fields', False)
@@ -67,3 +67,14 @@ class DateTimeRangeField(BaseRangeField):
class DateRangeField(BaseRangeField):
base_field = forms.DateField
range_type = DateRange
+
+
+class RangeWidget(MultiWidget):
+ def __init__(self, base_widget, attrs=None):
+ widgets = (base_widget, base_widget)
+ super(RangeWidget, self).__init__(widgets, attrs)
+
+ def decompress(self, value):
+ if value:
+ return (value.lower, value.upper)
+ return (None, None)