1. 程式人生 > >Django 第十課 4.【ORM查詢操作】

Django 第十課 4.【ORM查詢操作】

沒有 都是 們的 返回 contain 取數 因此 匹配 color

#查詢

1:exact:在底層會被翻譯成 ‘=’

article = Article.objects.filter(title__exact=hello)

2:iexact:在底層被翻譯成 ‘LIKE’

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

* LIKE 和 = :大部分情況下都是等價的,只有少數情況下是不等價的。

* exact和iexact:他們的區別其實就是LIKE和=的區別,因為exact會被翻譯成=,而iexact會被翻譯LIKE

* 因為 ‘field_exact=xxx’ 其實等價於 ‘field=xxx’,因此我們直接使用 ‘field=xxx’就可以了,並且因為大部分情況 ‘exact’和‘iexact’又是等價的,因為我們以後直接使用 ‘field=xxx’就可以了

3: QuerySet.query: ‘query‘ 可以用來查看合格‘ORM’查詢語句最終被翻譯成的SQL語句。但是‘query’只能被用在 ‘QuerySet’ 對象上,不能用在普通的‘ORM模型’上。因此如果你得查詢語句是通過‘get’來獲取數據的,那麽就不能使用‘query’,因為‘get’返回的是滿足條件的‘ORM’模型,而不是‘QuerySet’。如果你是通過‘filter’等其他返回 ‘QuerySet’的方法查詢的,那麽就可以使用‘query’

4: contains: 使用大小寫敏感的判斷,某個字符串是否在指定的字段中。這個判斷條件會使用大小寫敏感,因此在被翻譯成 ‘SQL’語句的時候,會使用‘like binary’,而‘like binary’就是使用大小寫敏感的

5:icontains:使用大小寫不敏感的判斷,某個字符串是否被包含在指定的字段中。這個查詢語句在被翻譯成‘SQL’的時候,使用的是‘like’,而‘like’在‘MySql’層面就是不區分大小寫的。

6:contains和icontain:在被翻譯成‘SQL’的時候使用的是 ‘%like%’,就是只要整個字符串中出現‘hello’都能過夠被找到,而‘iexact’沒有百分號,那麽意味著只要完全相等的時候才會被匹配到

Django 第十課 4.【ORM查詢操作】