資料庫單錶查詢之神奇的雙下劃線

2021-09-22 08:02:53 字數 1945 閱讀 2661

models.tb1.objects.filter(id__lt=10, id__gt=1) 、

#獲取id大於1 且 小於10的值

models.tb1.objects.filter(id__in=[11, 22, 33])

獲取id等於11、22、33的資料

models.tb1.objects.exclude(id__in=[11, 22, 33]) # not in

models.tb1.objects.filter(name__contains=「ven」) # 獲取name欄位包含"ven"的

models.tb1.objects.filter(name__icontains=「ven」) # icontains大小寫不敏感

models.tb1.objects.filter(id__range=[1, 3])

#id範圍是1到3的,等價於sql的between and

類似的還有:startswith,istartswith, endswith, iendswith 

date欄位還可以:

models.class.objects.filter(first_day__year=2017)

關係字段

(1)一對多

外來鍵型別在orm中用來表示外來鍵關聯關係,一般把foreignkey欄位設定在 '一對多』中』多』的一方。

例如:乙個學科對應多個學生,乙個學生對應乙個學科。

字段: foreignkey

字段引數:

to : 設定要關聯的表。

to_field : 設定要關聯的表的字段。 預設關聯的是表的id。

如果想關聯其他欄位名稱可以使用此欄位。

on_delete: 當刪除關聯表中的資料時,當前表與其關聯的行的行為。

models.cascade :刪除關聯資料,與之關聯也刪除。

models.do_nothing:刪除關聯資料,引發錯誤integrityerror。

models.protect: 刪除關聯資料,引發錯誤protectederror。

…正向查詢和反向查詢:

注意:1.正向查詢是指從有外來鍵的一方查詢另外一方。

2.反向查詢是指從沒有外來鍵的一方查詢有外來鍵的一方。

3.不管是正向還是反向進行物件查詢的時候獲取的是物件而不是queryset集合。

4.正向查詢語法:

obj.外來鍵字段(關聯字段) -->> 獲取物件。

obj.外來鍵字段(關聯字段).欄位–>> 獲取物件對應的字段值。

5.反向查詢語法:

obj.表名_set.***

(2)多對多

用於表示多對多的關聯關係。在資料庫中通過第三張表來建立關聯關係。

字段: manytomanyfield

字段引數to: 設定要關聯的表

注意: 正向查詢和反向查詢同一對多規則。

例如:乙個老師對應多個學生,乙個學生對應多個老師。

(3)一對一

一對一的關聯關係多用在當一張表的不同字段查詢頻次差距過大的情況下,將本可以儲存在一張表的字段拆開放置在兩張表中,然後將兩張表建立一對一的關聯關係。

字段:onetoonefield

字段引數

to:設定要關聯的表。

to_field:設定要關聯的字段。

on_delete: 同foreignkey欄位。

神奇的雙下劃線查詢

神奇的雙下劃線查詢 1 年齡大於35歲的資料 res models.user.objects.filter age gt 35 print res 2 年齡小於35歲的資料 res models.user.objects.filter age lt 35 print res 大於等於 小於等於 re...

python的單下劃線和雙下劃線

python 類中的單下劃線開頭的變數表示 該方法為類的私有方法,原則上外部不能訪問,但是用.xx是可以訪問到的 雙下劃線開頭則是強制外部不能直接訪問的用.xx是訪問不到的,它內部其實是將變數名重新命名為 類名 變數名,所以可以通過.類名 變數名訪問 coding utf 8 author linh...

單錶查詢中雙下劃線運用

models.tb1.objects.filter id lt 10,id gt 1 獲取id大於1 且 小於10的值 models.tb1.objects.filter id in 11,22,33 獲取id等於11 22 33的資料 models.tb1.objects.exclude id i...