日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【django】查询集QuerySet

發布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【django】查询集QuerySet 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、概念

Django的ORM中存在 查詢集 的概念。
查詢集,也稱查詢結果集、QuerySet,表示從數據庫中獲取的對象集合。
當調?如下過濾器?法時,Django會返回查詢集(?不是簡單的列表)
all():返回所有數據
filter():返回滿?條件的數據
exclude():返回滿?條件之外的數據
order_by():對結果進?排序

對查詢集可以再次調?過濾器進?過濾,如

FilmInfo.objects.filter(fid__gt=2).order_by('pub_date') <QuerySet [<FilmInfo: shell>, <FilmInfo: 我愛你中國>, <FilmInfo: 我和我的家人>, <FilmInfo: 奪冠>, <FilmInfo: 我愛你china>]>

也就意味著查詢集可以含有零個、?個或多個過濾器。過濾器基于所給的參數限制查詢的結果。

從SQL的?度講,查詢集與select語句等價,過濾器像where、limit、order by?句。

判斷某?個查詢集中是否有數據:
exists():判斷查詢集中是否有數據,如果有則返回True,沒有則返回False。

FilmInfo.objects.filter(fid__gt=2).order_by('pub_date').exists() True

二、兩?特性

1、惰性執?
當執?查詢操作返回QuerySet時,默認查詢前21條數據。
2、緩存
默認情況下,QuerySet會把結果存放在內置當緩存中。 QuerySet提供了_result_cache 的變量專?存儲緩存。

三、限制查詢集

可以對查詢集進?取下標或切?操作,等同于sql中的 limit 和 offset ?句。
注意:不?持負數索引。
對查詢集進?切?后返回?個新的查詢集,不會?即執?查詢。
如果獲取?個對象,直接使?[0],等同于[0:1].get(),

film=FilmInfo.objects.all() film[0] <FilmInfo: django>

但是如果沒有數據,[0]引發IndexError異常,

film=FilmInfo.objects.all() film[9] IndexError: list index out of range

[0:1].get()如果沒有數據引發DoesNotExist異常。

四、分頁

from film.models import PeopleInfo,FilmInfo from django.core.paginator import Paginator fs=FilmInfo.objects.all() pageobj=Paginator(fs,1) <input>:1: UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list: <class 'film.models.FilmInfo'> QuerySet. fs=FilmInfo.objects.all().order_by('playcount') pageobj=Paginator(fs,1) pageobj.page(1) <Page 1 of 7> pageobj.page(4) <Page 4 of 7> pageobj.num_pages 7

:1: UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list: <class ‘film.models.FilmInfo’> QuerySet.
表示分頁前先得進行排序
from django.core.paginator import Paginator:分頁類
pageobj=Paginator(fs,1):分頁對象
fs:查詢集;1:每頁展示1條數據
pageobj.page(1):第一頁
pageobj.num_pages:總頁數

總結

以上是生活随笔為你收集整理的【django】查询集QuerySet的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。