咱們不多會一次性從數據庫中取出全部的數據;一般都只針對一部分數據進行操做。 在Django API中,咱們能夠使用`` filter()`` 方法對數據進行過濾:python
>>> Publisher.objects.filter(name='Apress') [<Publisher: Apress>]
filter() 根據關鍵字參數來轉換成 WHERE SQL語句。 前面這個例子 至關於這樣:web
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從句, 所以上面的代碼能夠轉化成這樣:spa
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>]
在 name 和 contains 之間有雙下劃線。和Python同樣,Django也使用雙下劃線來代表會進行一些魔術般的操做。這裏,contains部分會被Django翻譯成LIKE語句:code
SELECT id, name, address, city, state_province, country, website FROM books_publisher WHERE name LIKE '%press%';