Как правило, вам нужно применить фильтры, а затем применить их снова, но для вновь созданного набора запросов. Примерно так:
f = SomeFilter(request.GET)
f = SomeFilter(request.GET, queryset=f.qs)
Теперь, когда у вас есть правильный набор запросов, вы можете динамически переопределять поставщиков в init :
def __init__(self, **kw):
super(SomeFilter, self).__init__(**kw)
self.filters['provider'].extra['queryset'] = Provider.objects.filter(foo__in=self.queryset)
Не красиво, но работает. Возможно, вам следует заключить эти два вызова в более эффективный метод фильтра.