Order_by("-date") некорректно работает с пагинатором
SO у меня более 500 записей и я хочу упорядочить их по дате, это было довольно просто и это работало, но когда я использовал paginator для добавления пагинации, это все испортило, нет никакого смысла в этом упорядочивании прямо сейчас, может кто-нибудь помочь мне понять, что происходит и что мне нужно сделать, чтобы мой order_by() работал.
Вот мое мнение:
if request.method == "GET":
if request.session["store_year"] == "" and request.session["store_month"] == "":
request.session["store_year"] = ""
request.session["store_month"] = ""
timelineData = Timeline_english.objects.all().order_by("-date")
timeline_list = []
timeline_date_list = set()
for val in timelineData:
obj = {
"id": val.id,
"image": val.image,
"text": val.text,
"url": val.url.replace(" ", "-").lower(),
"date": val.date
}
timeline_list.append(obj)
timeline_date_list.add(str(val.date)[:4])
page = request.GET.get('page', 1)
print("page", page)
paginator = Paginator(timeline_list, 9)
try:
timeline_list = paginator.page(page)
except PageNotAnInteger:
timeline_list = paginator.page(1)
except EmptyPage:
timeline_list = paginator.page(paginator.num_pages)
print(timeline_list)
try:
page_count = math.ceil(timelineData.count()/9)
page_limit = 3
page_count_arr = []
if page_count > page_limit:
new_pagecount = int(page)+page_limit
else:
new_pagecount = page_count
last_page_number = {
"mode": "yes" if page_count == int(page) else "no",
"index": page_count
}
if page_count > int(page):
for i in range(int(page), new_pagecount+1):
page_count_arr.append({
"mode": "yes" if i == int(page) else "no",
"index": i
})
data.update({"quotes_list_pages": page_count_arr})
else:
data.update({"quotes_list_pages": page_count_arr})
except Exception:
page_count_arr = [{
"mode": "yes",
"index": 1
}]
data.update({"quotes_list_pages": page_count_arr})
вот что я использую для пагинации:
from django.core.paginator import InvalidPage, Paginator, EmptyPage, PageNotAnInteger
любая помощь будет очень признательна спасибо.