Comments by "" (@Rabbit-9893) on "Уроки Django 3 - фильтр фильмов, Q в django - урок 17 | Михаил Омельченко" video.

  1. 1
  2. 1
  3.  @DjangoSchool  shop.html <form action="{% url 'filter' %} " method="get" name="filter"> <div class="brands_products"><!--brands_products--> <h2>Категория</h2> <div class="brands-name"> <ul class="nav nav-pills nav-stacked"> {% for category in view.get_category %} <li><a href=""><input type="checkbox" class="checked" name="category" value="{{ category.name }}">{{ category.name }}</a></li> {% endfor %} </ul> </div> </div><!--/brands_products--> <div class="brands_products"><!--brands_products--> <h2>Типы</h2> <div class="brands-name"> <ul class="nav nav-pills nav-stacked"> {% for type in view.get_types %} <li><a href=""><input type="checkbox" class="checked">{{ type.name }}</a></li> {% endfor %} </ul> </div> </div><!--/brands_products--> <div class="brands_products"><!--brands_products--> <h2>Бренд</h2> <div class="brands-name"> <ul class="nav nav-pills nav-stacked"> {% for brands in view.get_brands %} <li><a href=""><input type="checkbox" class="checked">{{ brands.name }}</a></li> {% endfor %} </ul> </div> </div><!--/brands_products--> <div class="price-range"><!--price-range--> <h2>Цена</h2> <div class="well"> {{ form.as_p}} </div> </div><!--/price-range--> <p align="center"><button type="submit">Найти</button></p> </form> views.py from django.shortcuts import render from django.db.models import Q from django.core.paginator import Paginator from django.views.generic.base import View from django.views.generic import ListView, DetailView from .forms import FilterPrice from .models import Tovar, Category, Brands, Type class CategoryBrandsType: def get_category(self): return Category.objects.all() def get_brands(self): return Brands.objects.all() def get_types(self): return Type.objects.all() class FilterTovarView(CategoryBrandsType, ListView): def get_queryset(self): queryset = Tovar.objects.filter( Q(category__in=self.request.GET.getlist("category")) | Q(brands__in=self.request.GET.getlist("brands")) | Q(type__in=self.request.GET.getlist("type")) ).distinct() return queryset class TovarListView(CategoryBrandsType, ListView): #КЛАСС ВЫВОДА ТОВАРОВ def get(self, request): tovary = Tovar.objects.all()# form = FilterPrice(request.GET) if form.is_valid(): if form.cleaned_data["min_price"]: tovary = tovary.filter(price_tovar__gte=form.cleaned_data["min_price"]) if form.cleaned_data["max_price"]: tovary = tovary.filter(price_tovar__lte=form.cleaned_data["max_price"]) return render(request, "shop.html", {"tovar_list": tovary, "form": form}) urls.py from django.urls import path from .import views urlpatterns = [ path("", views.TovarListView.as_view()), path("filter/", views.FilterTovarView.as_view(), name='filter'), ]
    1
  4. 1
  5. 1
  6. 1