Skip to content

Commit 3031145

Browse files
author
Ryan P Kilby
committed
Convert lookup_type => lookup_expr
1 parent b19ddbc commit 3031145

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

rest_framework_filters/filterset.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,20 @@ def __new__(cls, name, bases, attrs):
4343
model = new_class._meta.model
4444
field = filterset.get_model_field(model, filter_.name)
4545

46-
for lookup_type in filters.LOOKUP_TYPES:
46+
for lookup_expr in filters.LOOKUP_TYPES:
4747
if isinstance(field, ForeignObjectRel):
4848
f = new_class.filter_for_reverse_field(field, filter_.name)
4949
else:
50-
f = new_class.filter_for_field(field, filter_.name, lookup_type)
50+
f = new_class.filter_for_field(field, filter_.name, lookup_expr)
5151
f = fix_filter_field(f)
5252

5353
# compute filter name
54-
filter_name = name
54+
filter_name = LOOKUP_SEP.join([name, lookup_expr])
55+
5556
# Don't add "exact" to filter names
56-
if lookup_type != 'exact':
57-
filter_name = LOOKUP_SEP.join([name, lookup_type])
57+
_exact = LOOKUP_SEP + 'exact'
58+
if filter_name.endswith(_exact):
59+
filter_name = filter_name[:-len(_exact)]
5860

5961
new_class.base_filters[filter_name] = f
6062

@@ -106,7 +108,7 @@ def __init__(self, *args, **kwargs):
106108
# Add an 'isnull' filter to allow checking if the relation is empty.
107109
filter_name = "%s%sisnull" % (filter_.name, LOOKUP_SEP)
108110
if filter_name not in self.filters:
109-
self.filters[filter_name] = filters.BooleanFilter(name=filter_.name, lookup_type='isnull')
111+
self.filters[filter_name] = filters.BooleanFilter(name=filter_.name, lookup_expr='isnull')
110112

111113
elif isinstance(filter_, filters.MethodFilter):
112114
filter_.resolve_action()

tests/testapp/filters.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ class Meta:
218218

219219

220220
class BlogPostOverrideFilter(FilterSet):
221-
declared_publish_date__isnull = filters.NumberFilter(name='publish_date', lookup_type='isnull')
221+
declared_publish_date__isnull = filters.NumberFilter(name='publish_date', lookup_expr='isnull')
222222
all_declared_publish_date = filters.AllLookupsFilter(name='publish_date')
223223

224224
class Meta:

0 commit comments

Comments
 (0)