diff options
author | Ng Zhi An <ngzhian@gmail.com> | 2015-01-18 02:20:42 +0000 |
---|---|---|
committer | Ng Zhi An <ngzhian@gmail.com> | 2015-01-22 19:36:15 +0000 |
commit | 4669b6a807811d6763b9fdc5df974cb67aa1fb56 (patch) | |
tree | 18b1d7b8c069771c299866f977d5a309459e5650 /django/contrib/postgres/forms/ranges.py | |
parent | 38c17871bb6dafd489367f6fe8bc56199223adb8 (diff) | |
download | django-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.py | 15 |
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) |