Django學習路18 F物件和Q物件

2022-06-19 11:33:12 字數 3320 閱讀 4036

f 物件:

可以使用模型的 a 屬性和 b 屬性進行比較

寫法:需要的資料物件 = 資料表(類名).objects.filter(列名__條件=f('

列名2'

))需求: 檢視男生數量比女生少 的公司名稱

companies = company.objects.filter(c_boy_num__lt=f('

c_girl_num'))

f 物件支援算術運算

需求: 檢視男生數量比女生少 15個的公司名稱

companies = company.objects.filter(c_boy_num__lt=f('

c_girl_num

')-15)

在 models.py 中建立資料表 company

class

company(models.model):

c_name = models.charfield(max_length=16)

#公司名字

c_girl_num = models.integerfield(max_length=16)

#女生人數

c_boy_num = models.integerfield(max_length=16)

#男生人數

產生遷移檔案

python manage.py makemigrations

進行遷移

python manage.py migrate

新增資料

在 urls.py 中進行註冊

需求:檢視 女生多於男生的公司名稱

url(r

'getgirlgtboy

',views.getgirlgtboy)

views.py 中建立 getgirlgtboy 函式

defgetgirlgtboy(request):

companies = company.objects.filter(c_girl_num__gt=f('

c_boy_num'))

for company in

companies:

#進行遍歷後檢視公司名

獲取成功")

注:f 導包 匯入的是

f 物件使用 算數表示式

defgetgirlgtboy(request):

companies = company.objects.filter(c_girl_num__lt=f('

c_boy_num

')-30)

#檢視男生比女生多於 30 的

for company in

companies:

#進行遍歷後檢視公司名

獲取成功

q 物件

過濾器的方法中的引數

常用於 組合條件

表名(models中建立的類) .objects.filter(q(表中列名__條件=值))

示例:student.objects.filter(q(sage_lt=25))

q物件支援 | & ~年齡大於等於 25的

分析: 不小於 25

示例:student.objects.filter(~q(sage_lt=25))

q 物件可以對條件進行封裝封裝後支援邏輯運算與 &或 |

非 ~

在 urls.py 中進行註冊

url(r

'getgirlandboy

',views.getgirlandboy)

在 models.py 中新增 對應的函式 getgirlandboy

defgetgirlandboy(request):

companies = company.objects.filter(q(c_boy_num__gt=90) & q(c_girl_num__gt=80))

#男生大於 90 且 女生大於 80 的公司名稱

for company in

companies:

#進行遍歷後檢視公司名

獲取成功")

注:且 : q(條件) &q(條件)

取反 : ~q 表示取反

或 : q(條件) | q(條件)

執行結果

Django學習記錄(2)Django中的路由管理

django的路由管理,由應用檔案下的urls.py檔案進行管理 所有的路由都放置在urlpatterns中 每乙個路由在定義的時候,需要通過路由函式來定義 路由函式,常見的有path,url path router,view,kwargs,name 普通路由的定義 url router,view,...

Django學習系列18 使用遷移建立生產資料庫

django生成乙個很有幫助的錯誤資訊,大意是說沒有正確設定資料庫。你可能會有疑惑,為什麼在單元測試一切都執行ok,這是因為django為單元測試建立了專用的測試資料庫 這是django中testcase所做的神奇事情之一。為了設定好真正的資料庫,要建立乙個資料庫,sqlite資料庫只是硬碟中的乙個...

對stm32f10c gpio c的學習

1 gpio 暫存器 每組io口含下面7個暫存器。也就是7個暫存器,一共可以控制一組gpio的16個io口。gpiox crl 埠配置低暫存器 gpiox crh 埠配置高暫存器 gpiox idr 埠輸入暫存器 gpiox odr 埠輸出暫存器 gpiox bsrr 埠位設定 清除暫存器 gpio...