我有一个产品模型,该模型具有属性名称,价格,描述,类别。 我想创建一个带有视图中复选框的动态价格范围过滤器。 例如,如果我查询我的产品,如下所示:
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
但是上述操作应该基于最小和最大价格值进行。
我尝试使用范围(最小,最大,步长),但是很难生成动态的价格范围过滤器。非常感谢您的帮助。
答案 0 :(得分:0)
您可以使用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 / frontend的逻辑,您还可以将范围直接包装到变量中的视图中,并将其呈现出来。