django中的filter詳解


filter (數據過濾)

我們很少會一次性從數據庫中取出所有的數據;通常都只針對一部分數據進行操作。 在Django API中,我們可以使用`` filter()`` 方法對數據進行過濾:

>>> Publisher.objects.filter(name='Apress')
[<Publisher: Apress>]

filter() 根據關鍵字參數來轉換成 WHERE SQL語句。 前面這個例子 相當於這樣:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE name = 'Apress';

 你可以傳遞多個參數到 filter() 來縮小選取范圍:

>>> Publisher.objects.filter(country="U.S.A.", state_province="CA")
[<Publisher: Apress>]

多個參數會被轉換成 AND SQL從句, 因此上面的代碼可以轉化成這樣:

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")
[<Publisher: Apress>]

namecontains 之間有雙下划線。和Python一樣,Django也使用雙下划線來表明會進行一些魔術般的操作。這里,contains部分會被Django翻譯成LIKE語句:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE name LIKE '%press%';

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM