Skip to content

Commit 5686bec

Browse files
committed
LITE-20265 SelectFields can't be used in common filters
1 parent fba7d06 commit 5686bec

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

dj_rql/filter_cls.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
SUPPORTED_FIELD_TYPES,
2626
SearchOperators,
2727
)
28+
from dj_rql.drf.fields import SelectField
2829
from dj_rql.exceptions import RQLFilterLookupError, RQLFilterParsingError, RQLFilterValueError
2930
from dj_rql.openapi import RQLFilterClassSpecification
3031
from dj_rql.parser import RQLParser
@@ -266,9 +267,14 @@ def build_q_for_filter(self, data):
266267
filter_lookup = self._get_filter_lookup(
267268
filter_name, operator, str_value, available_lookups, null_values,
268269
)
270+
django_field = base_item.get('field')
271+
if django_field and isinstance(django_field, SelectField):
272+
raise RQLFilterLookupError(**self._get_error_details(
273+
filter_name, filter_lookup, str_value,
274+
))
275+
269276
django_lookup = self._get_django_lookup(filter_lookup, str_value, null_values)
270277

271-
django_field = base_item.get('field')
272278
use_repr = base_item.get('use_repr', False)
273279

274280
typed_value = None

tests/test_filter_cls/test_fields_filtering.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,7 @@ def test_datetime_field_fail(filter_name, bad_value):
410410
@pytest.mark.parametrize('filter_name,value', [
411411
('amazon_rating', '1.23'), ('page.number', '5'),
412412
('int_choice_field_repr', 'I'), ('str_choice_field_repr', 'I'),
413+
('select_author', 'value'),
413414
])
414415
def test_field_lookup_fail(filter_name, value, bad_operator):
415416
assert_filter_field_lookup_error(filter_name, bad_operator, value)

0 commit comments

Comments
 (0)