Skip to content

Commit 58e1441

Browse files
author
Ryan P Kilby
committed
Refactor setup method as lazy evaluation in the form field
1 parent 99a0b7e commit 58e1441

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

rest_framework_filters/filters.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ def _import_class(path):
2222
class RelatedFilter(ModelChoiceFilter):
2323
def __init__(self, filterset, *args, **kwargs):
2424
self.filterset = filterset
25-
# self.parent_relation = kwargs.get('parent_relation', None)
2625
return super(RelatedFilter, self).__init__(*args, **kwargs)
2726

2827
def filterset():
@@ -58,8 +57,11 @@ class FilterSetSubset(BaseFilterSet):
5857

5958
return FilterSetSubset
6059

61-
def setup_filterset(self):
62-
self.extra['queryset'] = self.filterset._meta.model.objects.all()
60+
@property
61+
def field(self):
62+
# if no queryset is provided, default to the filterset's default queryset
63+
self.extra.setdefault('queryset', self.filterset._meta.model._default_manager.all())
64+
return super(RelatedFilter, self).field
6365

6466

6567
class AllLookupsFilter(Filter):

rest_framework_filters/filterset.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,6 @@ def __init__(self, *args, **kwargs):
6666

6767
for name, filter_ in six.iteritems(self.filters.copy()):
6868
if isinstance(filter_, filters.RelatedFilter):
69-
filter_.setup_filterset()
70-
7169
# Add an 'isnull' filter to allow checking if the relation is empty.
7270
filter_name = "%s%sisnull" % (filter_.name, LOOKUP_SEP)
7371
if filter_name not in self.filters:

0 commit comments

Comments
 (0)