Как изменить переменную фильтра в представлении из шаблона Django?
У меня есть модель отзывов, в которой есть отзывы, сделанные пользователями. В представлении я делаю для нее пагинацию. Затем я фильтрую отзывы по переменной type = 'art'
Как я могу изменить переменную фильтра для type = 'music'
из шаблона, чтобы отображать выбранные отзывы? Как затем использовать all()
для отображения всех отзывов? Должен ли я делать отдельные шаблоны для каждой переменной вида или есть более простой способ?
Мой view.py:
def viewrevs(request):
rev = Reviews.objects.filter(type = 'art')
paginator = Paginator(rev,2)
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)
...
Мой шаблон.html
{% for rev in page_obj %}
{{ rev.name }}
{{ rev.size }}
{{ rev.data }}
...
{% enfor %}
Поэтому вы можете использовать параметры запроса следующим образом domain/search/?type=art
Ваш URL может выглядеть следующим образом
urlpatterns = [
path('domain/search/', views.CityListView.as_view()),
]
Тогда ваши взгляды:
def viewrevs(request):
# Grab the type from the query param
_type = request.GET.get('type','art')
# Filter by the type
rev = Reviews.objects.filter(type=_type)
paginator = Paginator(rev,2)
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)
Вы даже можете сделать подобное для пагинации, иметь параметр для page_size
и page