@@ -113,15 +113,15 @@ You can easily traverse multiple relationships when filtering by using ``Related
113113
114114
115115 class DepartmentFilter(filters.FilterSet):
116- manager = filters.RelatedFilter(ManagerFilter, name = ' manager' )
116+ manager = filters.RelatedFilter(ManagerFilter, name = ' manager' , queryset = Manager.objects.all() )
117117
118118 class Meta:
119119 model = Department
120120 fields = {' name' : [' exact' , ' in' , ' startswith' ]}
121121
122122
123123 class CompanyFilter(filters.FilterSet):
124- department = filters.RelatedFilter(DepartmentFilter, name = ' department' )
124+ department = filters.RelatedFilter(DepartmentFilter, name = ' department' , queryset = Department.objects.all() )
125125
126126 class Meta:
127127 model = Company
@@ -146,7 +146,7 @@ Recursive relations are also supported. It may be necessary to specify the full
146146
147147 class PersonFilter(filters.FilterSet):
148148 name = filters.AllLookupsFilter(name = ' name' )
149- best_friend = filters.RelatedFilter(' people.views.PersonFilter' , name = ' best_friend' )
149+ best_friend = filters.RelatedFilter(' people.views.PersonFilter' , name = ' best_friend' , queryset = Person.objects.all() )
150150
151151 class Meta:
152152 model = Person
@@ -185,7 +185,7 @@ to all filter classes. It incorporates some of the implementation details of the
185185 return qs.filter(** {lookup_expr: isnull})
186186
187187 class AuthorFilter(filters.FilterSet):
188- posts = filters.RelatedFilter(' PostFilter' )
188+ posts = filters.RelatedFilter(' PostFilter' , queryset = Post.objects.all() )
189189
190190 class Meta:
191191 model = Author
@@ -285,15 +285,15 @@ You cannot combine ``AllLookupsFilter`` with ``RelatedFilter`` as the filter nam
285285.. code- block:: python
286286
287287 class ProductFilter(filters.FilterSet):
288- manufacturer = filters.RelatedFilter(' ManufacturerFilter' )
288+ manufacturer = filters.RelatedFilter(' ManufacturerFilter' , queryset = Manufacturer.objects.all() )
289289 manufacturer = filters.AllLookupsFilter()
290290
291291To work around this, you have the following options:
292292
293293.. code- block:: python
294294
295295 class ProductFilter(filters.FilterSet):
296- manufacturer = filters.RelatedFilter(' ManufacturerFilter' )
296+ manufacturer = filters.RelatedFilter(' ManufacturerFilter' , queryset = Manufacturer.objects.all() )
297297
298298 class Meta:
299299 model = Product
@@ -304,7 +304,7 @@ To work around this, you have the following options:
304304 # or
305305
306306 class ProductFilter(filters.FilterSet):
307- manufacturer = filters.RelatedFilter(' ManufacturerFilter' , lookups = ' __all__' ) # `lookups` also accepts a list
307+ manufacturer = filters.RelatedFilter(' ManufacturerFilter' , queryset = Manufacturer.objects.all(), lookups = ' __all__' ) # `lookups` also accepts a list
308308
309309 class Meta:
310310 model = Product
@@ -326,15 +326,15 @@ and ``FilterSet``s from either package are compatible with the other's DRF backe
326326 ...
327327
328328 class DRFFilter(rest_framework_filters.FilterSet):
329- vanilla = rest_framework_filters.RelatedFilter(filterset = VanillaFilter)
329+ vanilla = rest_framework_filters.RelatedFilter(filterset = VanillaFilter, queryset = ... )
330330
331331
332332 # invalid
333333 class DRFFilter(rest_framework_filters.FilterSet):
334334 ...
335335
336336 class VanillaFilter(django_filters.FilterSet):
337- drf = rest_framework_filters.RelatedFilter(filterset = DRFFilter)
337+ drf = rest_framework_filters.RelatedFilter(filterset = DRFFilter, queryset = ... )
338338
339339
340340Caveats & Limitations
0 commit comments