如何对网店中的商品进行排序,这样点击按钮,排序就发生了变化,例如:price,-price.而且到views.py是在课堂上,而不是在def上。
views.py
class SectionView(View):
def get(self, request, *args, **kwargs):
sort_form = request.GET.getlist('sort')
products = Product.objects.filter(available=True)
if sort_form.is_valid():
needed_sort = sort_form.cleaned_data.get("sort_form")
if needed_sort == "ДТ":
products = products.order_by(
"created") # или updated в зависимости от того, что ты вкладываешь в понятие по дате
elif needed_sort == "ДЕД":
products = products.order_by("price")
elif needed_sort == "ДОД":
products = products.order_by("-price")
return render(
request=request,
template_name='main/index.html',
context={
'products':products,
}
)
forms.py
class SortForm(forms.Form):
sort_form = forms.TypedChoiceField(label='Сортировать:', choices=[('ПУ', 'По умолчанию'), ('ДТ', 'По дате'), ('ДЕД', 'От дешевых к дорогим'), ('ДОД', 'От дорогих к дешевым')])
index.py
<form action="{% url 'product_list' %}" method="get" class="sort-form">
{{ sort_form }}
<p><input type="submit" name="sort" value="Сортировать"></p>
{% csrf_token %}
</form>
1条答案
按热度按时间juzqafwq1#
以下是您可以如何处理它的示例: