How to pass dynamic filtering options in django_filters form instead of all model objects?

I have the following structure of the project (models): Company (based on Groups) <-- Products (foreignKey to Company) <-- Reviews (foreignKey to Products).

Inside template i want to give a user an opportunity to filter reviews by products, but when using django_filters it shows corrects queryset of reviews (related only to company's products) but in filter form dropdown options i can see all products of all companies (even those which are not presented on the page), for example for Company X i see on my page only Cactus and Dakimakura reviews, but in filter form i can select Sausage (but i shouldnt, because its product from another company).

For now it's all looks like this:

#View
def reviewsView(request):
    context = {}
    user = request.user
    company = user.company
    products_qset = ProductModel.objects.filter(company=company)
    reviews_objects = ReviewModel.objects.filter(product__in=products_qset)
    filter = ReviewFilter(request.GET, queryset=reviews_objects)
    context['filter'] = filter

    return render(request, 'companies/reviews.html', context)
#Filter
class ReviewFilter(django_filters.FilterSet):

    class Meta:
        model = ReviewModel
        fields = [
            'product',
            'marketplace',
            'operator',
            'state'
        ]
#Template
<form action="" method="get">
    {{ filter.form.as_p }}
    <input type="submit" name="press me" id="">
</form>
<div class="review-list">
{% for i in filter %}
{{i.product}}, {{i.marketplace}} etc.
{% endfor %}

I've done quite a lot of research on django_filters docs and this question seems like duplicate, but i can't fully understand what and why is happening to init in this answer and how to correctly rewrike class ReviewFilter so filter instance would do something like this (in View): filter = ReviewFilter(request.GET, queryset_to_show=someQS, queryset_to_display_filtering_options=anotherQS). For now its surely happening because ReviewFilter Meta points to the all table (ReviewModel) objects, instead of filtered beforehands.

I also trying to apply pagination on this page (i cut this from question code for "shortness") and after i will be able to implement filtering i would like to merge those two somehow, but if what i want is not possible - please point me to the right direction (for example: 'you can do this by writing your very own filtering system using some js, no need to use django_filters' or 'with angular.js/view.js/somethingelse you can have it all from the box').

Back to Top