【问题标题】:Filtering and sorting objects by min price and max price按最低价格和最高价格过滤和排序对象
【发布时间】:2020-10-26 07:11:57
【问题描述】:

我将产品模型描述如下:models.py

class Product(models.Model):
category = TreeManyToManyField(ProductCategory, blank=True, symmetrical=False, related_name='products',
                               verbose_name='Категория->Подкатегория')
name = models.CharField(max_length=200, db_index=True, verbose_name='Наименование товара')
price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='Цена')

views.py 中:

def product_list(request, category_slug=None):
category = None
categories = ProductCategory.objects.filter(available=True, is_active=True)
object_list = Product.objects.filter(available=True, is_active=True)
if category_slug:
    category = get_object_or_404(ProductCategory, slug=category_slug)
    object_list = object_list.filter(category=category)
paginator = Paginator(object_list, 16)
page = request.GET.get('page')
try:
    products = paginator.page(page)
except PageNotAnInteger:
    products = paginator.page(1)
except EmptyPage:
    products = paginator.page(paginator.num_pages)
return render(request, 'shop/products/list_by_category/product_list.html', {'category': category,
                                                                            'categories': categories,
                                                                            'products': products,
                                                                            })

问题是我想按最低价或最高价对商品进行排序(即以min_price价格和max_price价格的顺序显示商品) . 在模板中,我有一个排序表单:

<div class="secand_fillter">
    <h4>sort by price:</h4>
    <select class="selectpicker">
        <option>descending price</option>
        <option>ascending price</option>
    </select>
</div>

据我理解正确,需要使用GET方法发送商品将被排序的参数,并且在视图中,通过覆盖get_queryset方法(接收排序参数),返回列表产品返回。

【问题讨论】:

    标签: python html django django-models django-views


    【解决方案1】:

    升序

    object_list = Product.objects.filter(available=True, is_active=True).order_by('price')
    

    降序

    object_list = Product.objects.filter(available=True, is_active=True).order_by('-price')
    

    【讨论】:

    • 感谢您的回复!但我可能把这个问题表述得很糟糕。我会努力纠正自己。 - 在模板级别,我有一个表单,其中有两个排序按钮:“价格降序”和“价格升序”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多