【问题标题】:Dynamic price range filter in DjangoDjango中的动态价格范围过滤器
【发布时间】:2020-12-26 02:15:51
【问题描述】:

我有一个具有名称、价格、描述、类别属性的产品模型。 我想在视图中创建一个带有复选框的动态价格范围过滤器。 例如,如果我像下面这样查询我的产品:

get_products = Product.objects.filter(category='Men')

现在,如果上面的查询有一个 min_price = 500 和 max_price=5000 的产品列表,那么我希望有 4 组价格范围过滤器,如下所示: 1)500-1500 2)1501-2500 3)2501-3800 4) 3801-5000

但以上应该是基于最小和最大价格值的动态。

我尝试使用 range(min,max,steps) 但生成动态价格范围过滤器非常困难。非常感谢任何帮助。

【问题讨论】:

  • 你能显示你目前的代码吗?

标签: python html django


【解决方案1】:

您可以使用 Django Aggregation 并使用 s.th。像这样:

# Imports
from django.db.models import Max
from django.db.models import Min

def price_range_filters(self):

    # Get Max and Min Value of Queryset
    max_price = Product.objects.all().aggregate(Max('price'))
    min_price = Product.objects.all().aggregate(Min('price'))

    # Split the range into 4
    range_step = (max_price - min_price) / 4

    # create context 
    context = {
        'max_price': max_price,
        'min_price': min_price,
        'range_step': range_step
    }

    # return objects and render page
    return render(request, 'your_site.html', context) 

然后您可以在客户端使用变量max_price + min_price + range_step 使用Javascript更新您的价格范围复选框。

根据您的 html/前端的逻辑,您还可以将范围直接包装到变量中的视图中,并直接渲染出来。

【讨论】:

  • 太棒了....!非常感谢先生。几个小时以来,我一直在努力完成这项工作,但你帮助我回答了一个简单的问题,很快我就实现了我想要的。再次感谢您,先生..!
猜你喜欢
  • 1970-01-01
  • 2019-08-03
  • 2016-04-11
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
  • 2013-06-16
  • 2016-09-26
  • 1970-01-01
相关资源
最近更新 更多