我們很少會一次性從數(shù)據(jù)庫中取出所有的數(shù)據(jù);通常都只針對一部分?jǐn)?shù)據(jù)進(jìn)行操作。 在Django API中,我們可以使用`` filter()`` 方法對數(shù)據(jù)進(jìn)行過濾:
>>> Publisher.objects.filter(name='Apress')
[
]
filter() 根據(jù)關(guān)鍵字參數(shù)來轉(zhuǎn)換成 WHERE SQL語句。 前面這個(gè)例子 相當(dāng)于這樣:
SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE name = 'Apress';
你可以傳遞多個(gè)參數(shù)到 filter() 來縮小選取范圍:
>>> Publisher.objects.filter(country="U.S.A.", state_province="CA")
[
]
多個(gè)參數(shù)會被轉(zhuǎn)換成 AND SQL從句, 因此上面的代碼可以轉(zhuǎn)化成這樣:
SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE country = 'U.S.A.'
AND state_province = 'CA';
注意,SQL缺省的 = 操作符是精確匹配的, 其他類型的查找也可以使用:
>>> Publisher.objects.filter(name__contains="press")
[
]
在 name 和 contains 之間有雙下劃線。和Python一樣,Django也使用雙下劃線來表明會進(jìn)行一些魔術(shù)般的操作。這里,contains部分會被Django翻譯成LIKE語句:
SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE name LIKE '%press%';
其他的一些查找類型有:icontains(大小寫無關(guān)的LIKE),startswith和endswith, 還有range(SQLBETWEEN查詢)。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

