Django QuerySet的分頁和排序

2022-08-28 13:21:19 字數 2776 閱讀 3168

資料查詢分頁功能和排序功能大家都很熟悉,本文以乙個小例子介紹一下django後台實現

id依次從6到1

"detail": "this is test",

"createtime": "2016-05-22 00:06:36",

"modifytime": "2016-05-22 00:06:36",

"isdelete": "false",

"type": "test",

"id": "6",

"iduser_id": "1"

"detail": "this is test",

"createtime": "2016-05-22 00:06:17",

"modifytime": "2016-05-22 00:06:17",

"isdelete": "false",

"type": "test",

"id": "5",

"iduser_id": "1"

"detail": "this is test",

"createtime": "2016-05-22 00:06:17",

"modifytime": "2016-05-22 00:06:17",

"isdelete": "false",

"type": "test",

"id": "4",

"iduser_id": "1"

"detail": "this is test",

"createtime": "2016-05-22 00:06:16",

"modifytime": "2016-05-22 00:06:16",

"isdelete": "false",

"type": "test",

"id": "3",

"iduser_id": "1"

"detail": "this is test",

"createtime": "2016-05-22 00:06:15",

"modifytime": "2016-05-22 00:06:15",

"isdelete": "false",

"type": "test",

"id": "2",

"iduser_id": "1"

"detail": "this is test",

"createtime": "2016-05-22 00:06:12",

"modifytime": "2016-05-22 00:06:12",

"isdelete": "false",

"type": "test",

"id": "1",

"iduser_id": "1"

分頁有兩個重要的引數,乙個是每頁顯示的記錄條數,乙個是頁碼。

資料表查詢主體**,實現比較簡單,就不解釋太多,直接看**

1、分片**luserlogs[start:end],這樣書寫只會從資料庫中獲取onepagecount資料,不會獲取所有資料

2、luserlogs.count()方式統計總數,不要用len(luserlogs),前者是select count(*)語法,後者會返回整個查詢結果集

onepagecount表示單頁個數,預設為20,page表示頁碼,預設為1

get

-- response --

200 ok

date: sun, 22 may 2016 04:07:04 gmt

server: wsgiserver/0.1 python/2.7.10

vary: cookie

x-frame-options: sameorigin

set-cookie: csrftoken=ma0qffh87zllpjqt0blupb16f7waoih8; expires=sun, 21-may-2017 04:07:04 gmt; max-age=31449600; path=/

[, ]

get

-- response --

200 ok

date: sun, 22 may 2016 04:11:07 gmt

server: wsgiserver/0.1 python/2.7.10

vary: cookie

x-frame-options: sameorigin

set-cookie: csrftoken=ma0qffh87zllpjqt0blupb16f7waoih8; expires=sun, 21-may-2017 04:11:07 gmt; max-age=31449600; path=/

[, ]

我這的資料表很多都需要排序,預設的排序方式都一樣,所以提取出基類如下

排序**ordering = ['-modifytime','-createtime','-id']

-符號表示逆序,從大到小,從最新的到最老的

實際的表繼承基類即可

返回的資料就如同文首的資料以及本文其他的json返回資料結構一樣,按照ordering定義的順序排列

django queryset合併問題

今天在實現搜尋時遇到乙個問題,如何同時搜尋model裡面的title以及content和category字典 contents blog.objects.filter content contains content titles blog.objects.filter title contains...

Django QuerySet快取和惰性機制

惰性機制 在內部。queryset在構造,過濾,切片,傳遞的時候通常查詢集不會真正的去資料庫查詢 那它會在什麼情況下去資料庫查詢呢?1.迭代 通過迴圈將值乙個個拿出來 2.切片,使用切片語法的step 步長切片 引數,或者是切片只切出乙個元素的時候,django將執行資料庫查詢,3.直接在控制台列印...

django QuerySet物件轉換成字典物件

今天做乙個新增購物車的模組,在新增商品之前要先驗證使用者是否處於登入狀態,前台用ajax非同步傳送請求,後台在接收到請求後從session中取出使用者登入資訊。根據登入資訊從使用者表中查詢出對應使用者,再將狀態碼和使用者資訊返回到前台,這裡查詢出來的使用者是個實體物件,需要先將它轉換為字典後再轉換為...