Django OR 過濾器

Salman Mehmood 2022年6月15日
Django OR 過濾器

我們將通過這個快速簡單的解釋來學習如何使用 OR 語句單獨執行過濾器,我們還將瞭解如何在 Django 查詢集中使用 Q 物件執行過濾器。

在 Django 查詢集中使用過濾器單獨執行 OR 語句並使用 Q 物件

在此示例中,我們將使用我們建立的已新增一些資料的資料庫,並向你展示它的外觀。

樣本資料表

我們建立一個基本示例;我們將建立一個名為 posts 的變數並將所有資料儲存在該變數中。我們將執行一個過濾器,它允許我們建立一個簡單的 OR 語句。

首先,我們需要選擇我們想要做出 OR 語句的內容,所以讓我們收集所有學生的姓名,以 austinbaldwin 開頭。

我們正在使用 surname__startswith 引數並將其傳遞 surname 以提取以姓氏 austinbaldwin 開頭的所有學生記錄。

使用或提取所有學生記錄

當我們執行伺服器時,我們看到它返回了兩個專案。

第一個程式碼的輸出

我們已經看到了一個帶有 OR 語句的基本示例,但我們可以新增另一個過濾器和更多 OR 語句。現在我們將處理另一個使用 OR 語句的示例,但這次我們使用的是 Q 物件。

這不是佇列物件的詳細演示,但我們會說它允許我們使用 Q 物件構建更復雜的查詢。我們將向你展示一個使用 Q 物件的示例。

程式碼指令幾乎相同,我們只是將所有內容包裝在一個 Q 物件周圍,在|之後運算子,我們將新增另一個 Q 物件。我們不需要再次新增 Student.objects.filter()

我們應該先寫出來,然後將姓氏傳遞給 surname__startswith 引數。

用 or 和 q 提取所有學生記錄

讓我們繼續執行這個查詢,所以我們返回相同的結果。

第二個程式碼的輸出

如果我們想擴充套件它,我們可以根據需要不斷地新增到這個 OR 語句。我們新增了 not ~Q,這意味著選擇除了姓氏以 baldwin 開頭的所有學生。

提取所有帶或不帶 q 的學生記錄

現在我們可以看到不再顯示所有的 baldwin,因為我們定義了~,它用於從資料庫中刪除或不選擇一個專案。

第三個程式碼的輸出

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn