Как передать параметры динамической фильтрации в форму django_filters вместо всех объектов модели?
У меня следующая структура проекта (модели): Компания (основана на Groups) <-- Продукты (foreignKey to Company) <-- Отзывы (foreignKey to Products).
Внутри шаблона я хочу дать пользователю возможность фильтровать отзывы по продуктам, но при использовании django_filters он показывает правильный набор отзывов (относящихся только к продуктам компании), но в выпадающих опциях формы фильтра я могу видеть все продукты всех компаний (даже те, которые не представлены на странице), Например, для компании X я вижу на своей странице только обзоры кактуса и дакимакуры, но в форме фильтра я могу выбрать колбасу (но не должен, потому что это продукт другой компании).
На данный момент все выглядит следующим образом:
#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 %}
Я довольно много изучил django_filters docs и этот вопрос кажется дублирующим, но я не могу полностью понять, что и почему происходит с init в этом ответе и как правильно переписать класс ReviewFilter, чтобы экземпляр фильтра делал что-то вроде этого (в View):
filter = ReviewFilter(request.GET, queryset_to_show=someQS, queryset_to_display_filtering_options=anotherQS)
. На данный момент это точно происходит, потому что ReviewFilter Meta указывает на все объекты таблицы (ReviewModel), вместо отфильтрованных beforehands.
Я также пытаюсь применить пагинацию на этой странице (я вырезал это из кода вопроса для "краткости") и после того, как я смогу реализовать фильтрацию, я хотел бы объединить эти два способа, но если то, что я хочу, невозможно - пожалуйста, укажите мне правильное направление (например: "вы можете сделать это, написав свою собственную систему фильтрации с помощью некоторых js, нет необходимости использовать django_filters" или "с angular. js/view.js/somethingelse вы можете получить все это из коробки").