我在网站上进行了过滤。有两种选择。要显示高于“ min_price”字段的价格,或者要显示低于“ max_price”字段的价格(您可以选择两者)。问题是“ max_price”显示为“ min_price”,我不知道为什么。
我的forms.py代码
class ProductSort(forms.Form):
min_price = forms.IntegerField(label='от', required = False)
max_price = forms.IntegerField(label='до', required = False)
我的views.py代码(显示选择选项)
form = ProductSort(request.GET)
if form.is_valid():
if form.cleaned_data["min_price"]:
products = products.filter(price__gte=form.cleaned_data["min_price"])
if form.cleaned_data["max_price"]:
products = products.filter(price__gte=form.cleaned_data["max_price"])
答案 0 :(得分:1)
您的表格有点过时,过滤器应检查是否有price
大于或等于(__gte
)给定的最低价格,并且小于或等于({{3} })超过指定的最高价格,因此:
form = ProductSort(request.GET)
if form.is_valid():
if form.cleaned_data["min_price"]:
products = products.filter(price__gte=form.cleaned_data["min_price"])
if form.cleaned_data["max_price"]:
# __lte instead of __gte
products = products.filter(price__lte=form.cleaned_data["max_price"])