Сортировка элементов результатов поиска

Как отсортировать результат поиска так, чтобы при сортировке по цене программа сортировала не все элементы, а только результат поиска? (в 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
Вернуться на верх