Django文檔閱讀之查詢
阿新 • • 發佈:2018-12-13
數據庫表 多個 translate clas itl The adl ret create 創建對象
檢索對象
用檢索單個對象
創建對象
為了在Python對象中表示數據庫表數據,Django使用直觀的系統:模型類表示數據庫表,該類的實例表示數據庫表中的特定記錄。
要創建對象,請使用模型類的關鍵字參數對其進行實例化,然後調用save()
以將其保存到數據庫中。
>>> from blog.models import Blog
>>> b = Blog(name=‘Beatles Blog‘, tagline=‘All the latest Beatles news.‘)
>>> b.save()
要在單個步驟中創建和保存對象,請使用該 create()
方法。
要保存對已存在於數據庫中的對象的更改,請使用 save()
。
更新ManyToManyField
工作的方式略有不同 - 使用 add()
字段上的方法向關系添加記錄,而不是用save()。
檢索對象
要從數據庫中檢索對象,請在模型類上構建一個 QuerySet
via a Manager
。
A QuerySet
表示數據庫中的對象集合。它可以有零個,一個或多個過濾器。過濾器根據給定的參數縮小查詢結果範圍。在SQL術語中,a QuerySet
等於SELECT
語句,過濾器是限制子句,如WHERE
或LIMIT
。
從表中檢索對象的最簡單方法是獲取所有這些對象。為此,請使用以下all()
方法
要創建此類子集,請優化初始 QuerySet
添加過濾條件。兩種最常見的改進方法 QuerySet
是:
filter(**kwargs)
- 返回
QuerySet
包含與給定查找參數匹配的新對象。 exclude(**kwargs)
- 返回
QuerySet
包含與給定查找參數不匹配的新對象。
查找參數(**kwargs
在上面的函數定義中)應采用下面的字段查找中描述的格式。
例如,要獲取QuerySet
2006年的博客條目,請使用filter()
如下:
Entry.objects.filter(pub_date__year=2006)
用檢索單個對象get()
filter()
QuerySet
即使只有一個對象與查詢匹配,它總會給你一個 - 在這種情況下,它將QuerySet
包含一個元素。
如果您知道只有一個對象與您的查詢匹配,則可以使用 直接返回對象的 get()
方法 Manager
:
>>> one_entry = Entry.objects.get(pk=1)
請註意,使用get()
和使用 filter()
切片之間存在差異 [0]
。如果沒有與查詢匹配的結果, get()
則會引發DoesNotExist
異常。
使用Python的數組切片語法的子集將您限制 QuerySet
為一定數量的結果。這相當於SQL LIMIT
和OFFSET
子句。
例如,這將返回前5個對象():LIMIT 5
>>> Entry.objects.order_by(‘headline‘)[0]
這大致相當於:
>>> Entry.objects.order_by(‘headline‘)[0:1].get()
>>> Entry.objects.all()[:5]
Django文檔閱讀之查詢