簡體   English   中英

如何更改此代碼:我不想使用原始 SQL,但我不知道該怎么做

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM