Django:F物件和Q物件

未来可期_Durant發表於2024-08-19

一、F物件

之前的查詢都是物件的屬性與常量值比較,兩個屬性怎麼比較呢?

作用:用於類屬性之間的比較

# 使用之前需要先匯入
from django.db.models import F
# 查詢閱讀量大於等於評論量的新聞
NewsInfo.objects.filter(read__gte=F('comment'))

可以在F物件上使用算數運算

# 查詢閱讀量大於2倍評論量的圖書
NewsInfo.objects.filter(read__gt=F('comment') * 2)

二、Q物件

作用:用於查詢時條件之間的邏輯關係。 and or not,可以對Q物件進行& | ~ 操作
# 使用之前需要先匯入
from django.db.models import Q

邏輯與(and) :&

# 查詢閱讀量大於300且評論量大於10的新聞的資料
# 不使用Q物件
NewsInfo.objects.filter(read__gt=300,comment__gt=10)

# 使用Q物件
NewsInfo.objects.filter(Q(read__gt=3)&Q(comment__gt=10))

邏輯或(or) : |

# 查詢id大於3或者閱讀量大於30的新聞的資訊
NewsInfo.objects.filter(Q(read__gt=3)|Q(comment__gt=10))

邏輯非(not) : ~

# 查詢id不等於2的新聞資訊
NewsInfo.objects.filter(~Q(id=2))

Django:基礎查詢語法

相關文章