[英]How can I change this code : I don't want to use raw SQL but I don't know how can I do
我不想使用原始 SQL。 但我不知道如何更改此代碼。
看了各種資料,想找個不使用SQL raw的方法,但是失敗了。 我不知道如何改變這一點。
def listSpecificPageWork(request):
current_page = request.GET['current_page']
totalCnt = DjangoBoard.objects.all().count()
print 'current_page=', current_page
boardList = DjangoBoard.objects.raw('SELECT Z.* FROM(SELECT X.*, round((rownum / %s)+0.5) as page FROM(SELECT ID,SUBJECT,NAME, CREATED_DATE, MAIL,MEMO,HITS FROM BOARD_DJANGOBOARD ORDER BY ID DESC)X)Z WHERE page = %s', [rowsPerPage, current_page])
print 'boardList=',boardList, 'count()=', totalCnt
pagingHelperIns = pagingHelper();
totalPageList = pagingHelperIns.getTotalPageList( totalCnt, rowsPerPage)
print 'totalPageList', totalPageList
return render_to_response('listSpecificPage.html', {'boardList': boardList, 'totalCnt': totalCnt, 'current_page':int(current_page), 'totalPageList':totalPageList} )
# -*- coding: utf-8 -*-
class pagingHelper:
"paging helper class"
def getTotalPageList(self, total_cnt, rowsPerPage):
if((total_cnt % rowsPerPage) == 0):
self.total_pages = total_cnt/rowsPerPage;
print 'getTotalPage #1'
else:
self.total_pages = (total_cnt/rowsPerPage) + 1;
print 'getTotalPage #2'
self.totalPageList = []
for j in range(self.total_pages):
self.totalPageList.append(j+1)
return self.totalPageList
def __init__(self):
self.total_pages = 0
self.totalPageList = 0
錯誤:沒有這樣的列:rownum
我想更改 boardList。
見https://docs.djangoproject.com/en/2.2/topics/db/queries/#limiting-querysets
def get_page(page_num,per_page=100):
offset = page_num*per_page
return DjangoDashboard.objects.filter(...).all()[offset:offset+per_page]
get_page(2) # gets the 3rd page (0 based...)
django 還提供了https://docs.djangoproject.com/en/2.2/topics/pagination/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.