我正在使用Django分頁,並且一切都工作正常,除了只有一個頁面排序。Django分頁不會排序第二頁
我曾嘗試:
if request.method == 'POST':
if request.POST.get('sort_by') == 'price':
products_list = Product.objects.filter(category = category).order_by('price')
selected_sort_price = "selected"
elif request.POST.get('sort_by') == 'name':
products_list = Product.objects.filter(category = category).order_by('name')
selected_sort_name = "selected"
elif request.POST.get('sort_by') == 'date':
products_list = Product.objects.filter(category = category).order_by('-id')
selected_sort_date = "selected"
show=request.POST.get('show', 5)
else:
products_list=Product.objects.filter(category = category).order_by('-id')
...
page = request.GET.get('page', 1)
paginator = Paginator(products_list, show)
try:
products = paginator.page(page)
except PageNotAnInteger:
products = paginator.page(1)
except EmptyPage:
products = paginator.page(paginator.num_pages)
以上僅當有來電後,如果沒有呼叫後,則按照創建日期排序工作。
因此,如果用戶想按價格排序,他會從下拉菜單中選擇價格,然後onchange
表單將被提交併且相應地對對象進行排序。問題是,當用戶轉到第二頁時,所有內容都會回到默認值,因爲不會發出任何郵寄呼叫,並且以前的發佈數據不會保留。
我能做些什麼來使排序適用於所有頁面?
尋找一些方向,
首先,爲什麼要使用POST?您不會修改任何服務器數據,只是檢索參數,相當於搜索表單或類別鏈接。所以對於GET,你使用'request.GET'。要處理模板中的動態查詢字符串,請查看[here](https://stackoverflow.com/q/5755150/1600649)以獲取靈感。 – Melvyn