diff --git a/advanced_filters/forms.py b/advanced_filters/forms.py index 0ffe761..4626897 100644 --- a/advanced_filters/forms.py +++ b/advanced_filters/forms.py @@ -87,12 +87,10 @@ def _build_query_dict(self, formdata=None): if self.is_valid() and formdata is None: formdata = self.cleaned_data key = "{field}__{operator}".format(**formdata) - if formdata['operator'] == "isnull": - return {key: None} - elif formdata['operator'] == "istrue": - return {formdata['field']: True} - elif formdata['operator'] == "isfalse": - return {formdata['field']: False} + + if formdata['operator'] in ["isnull", "istrue", "isfalse"]: + return {key: True if str(formdata['value']).lower() in ['1', 'true'] else False} + return {key: formdata['value']} @staticmethod @@ -106,6 +104,7 @@ def _parse_query_dict(query_data, model): return query_data parts = query_data['field'].split('__') + if len(parts) < 2: field = parts[0] else: @@ -123,18 +122,11 @@ def _parse_query_dict(query_data, model): else: mfield = mfield[-1] # get the field object - if query_data['value'] is None: - query_data['operator'] = "isnull" - elif query_data['value'] is True: - query_data['operator'] = "istrue" - elif query_data['value'] is False: - query_data['operator'] = "isfalse" + if isinstance(mfield, DateField): + # this is a date/datetime field + query_data['operator'] = "range" # default else: - if isinstance(mfield, DateField): - # this is a date/datetime field - query_data['operator'] = "range" # default - else: - query_data['operator'] = operator # default + query_data['operator'] = operator # default if isinstance(query_data.get('value'), list) and query_data['operator'] == 'range': diff --git a/advanced_filters/static/advanced-filters/advanced-filters.js b/advanced_filters/static/advanced-filters/advanced-filters.js index 3e3865a..bb22a58 100644 --- a/advanced_filters/static/advanced-filters/advanced-filters.js +++ b/advanced_filters/static/advanced-filters/advanced-filters.js @@ -139,7 +139,7 @@ var OperatorHandlers = function($) { $(this).off("change"); }); $('.form-row input.query-value').each(function() { - $(this).select2("destroy"); + // $(this).select2("destroy"); }); }; };