062:ORM查詢條件詳解-exact和iexact


查詢操作:

查找是數據庫操作中一個非常重要的技術。查詢一般就是使用filter、exclude以及get三個方法來實現。我們可以在調用這些方法的時候傳遞不同的參數來實現查詢需求。在 ORM 層面,這些查詢條件都是使用 field + __ + condition 的方式來使用的。以下將那些常用的查詢條件來一一解釋。

查詢條件exact和iexact:

exact:

使用精確的 = 進行查找。如果提供的是一個 None ,那么在 SQL 層面就是被解釋為 NULL 。示例
代碼如下:

article = Article.objects.get(id__exact=14)       #等價與: article = Article.objects.get(id=14)
article = Article.objects.get(id__exact=None)

以上的兩個查找在翻譯為 SQL 語句為如下:

select ... from article where id=14;
select ... from article where id IS NULL;

iexact:

使用 like 進行查找。示例代碼如下:

article = Article.objects.filter(title__iexact='hello world')

那么以上的查詢就等價於以下的 SQL 語句:

select ... from article where title like 'hello world';

注意:上面這個sql語句,因為在MySQL中,沒有一個叫做ilike的,所以iexact和exact的區別實際上就是LIKE和=的區別,而且,field__exact=***其實就是“field=***”,在大部分collation=utf8_general_ci 情況下都是一樣的( collation 是用來對字符串比較的)。因此,實際開發中使用exact和iexact很少,直接使用:field=*** 即可。

 

實例截圖如下:

 


免責聲明!

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



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