Сортировка элементов результатов поиска
Как отсортировать результат поиска так, чтобы при сортировке по цене программа сортировала не все элементы, а только результат поиска? (в views.py(#sort by price) я реализовал сортировку по цене, но она сортирует все элементы)
views.py
def filters(request):
#search
search_post = request.GET.get('search')
if search_post:
all = Product.objects.filter(Q(title__icontains=search_post) & Q(content__icontains=search_post))
else:
all = Product.objects.all()
#sort by price
sort_by = request.GET.get("sort", "l2h")
if sort_by == "l2h":
all = Product.objects.all().order_by("price")
elif sort_by == "h2l":
all = Product.objects.all().order_by("-price")
filters = IndexFilter(request.GET, queryset=all)
context = {
'filters': filters
}
return render(request, 'index.html', context)
filters.py
import django_filters
from .models import *
class IndexFilter(django_filters.FilterSet):
class Meta:
model = Product
fields = {'brand'}
models.py
class Product(models.Model):
BRAND = [
('apple', 'apple'),
('samsung', 'samsung'),
('huawei', 'huawei'),
('nokia', 'nokia'),
]
img = models.URLField(default='https://omsk.imperiya-pola.ru/img/nophoto.jpg')
title = models.CharField(max_length=80)
brand = models.CharField(max_length=20, choices=BRAND)
content = models.TextField()
price = models.FloatField(default=1.0)
def __str__(self):
return self.title