查詢操作:
查找是數據庫操作中一個非常重要的技術。查詢一般就是使用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=*** 即可。
實例截圖如下: