1. 程式人生 > >Django文檔閱讀之查詢

Django文檔閱讀之查詢

數據庫表 多個 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()。

檢索對象

要從數據庫中檢索對象,請在模型類上構建一個 QuerySetvia a Manager

A QuerySet表示數據庫中的對象集合。它可以有零個,一個或多個過濾器過濾器根據給定的參數縮小查詢結果範圍。在SQL術語中,a QuerySet等於SELECT語句,過濾器是限制子句,如WHERELIMIT

從表中檢索對象的最簡單方法是獲取所有這些對象。為此,請使用以下all()方法

要創建此類子集,請優化初始 QuerySet添加過濾條件。兩種最常見的改進方法

QuerySet是:

filter(**kwargs)
返回QuerySet包含與給定查找參數匹配對象。
exclude(**kwargs)
返回QuerySet包含與給定查找參數匹配對象

查找參數(**kwargs在上面的函數定義中)應采用下面的字段查找描述的格式

例如,要獲取QuerySet2006年的博客條目,請使用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 LIMITOFFSET子句。


例如,這將返回前5個對象():LIMIT 5

>>> Entry.objects.order_by(‘headline‘)[0]

這大致相當於:

>>> Entry.objects.order_by(‘headline‘)[0:1].get()



>>> Entry.objects.all()[:5]
 

Django文檔閱讀之查詢