Django F與Q查詢以及如何開啟事務

2022-10-08 03:06:09 字數 2036 閱讀 3591

# 匯入模組

from django.db.models import f,q

資料準備:

查詢賣出數大於庫存數的書籍

res = models.book.objects.filter(sold__gt=f('inventory'))

print(res)

#

將所有書籍的**提公升50
models.book.objects.update(price=f('price') + 50)
將所有書的名稱後面增加爆款兩個字

注意:在操作字元型別的資料時,f不能直接做到字串的拼接,需要匯入模組兩個模組

from django.db.models.functions import concat

from django.db.models import value

from django.db.models.functions import concat

from django.db.models import value

models.book.objects.update(title=concat(f('title'),value('爆款')))

# 匯入模組

from django.db.models import f,q

res = models.book.objects.filter(q(sold__gt=100)|q(price__lt=600))

print(res)

res = models.book.objects.filter(q(sold__gt=100),q(price__lt=600))

print(res)

res = models.book.objects.filter(~q(sold__gt=100) , q(price__lt=600))

print(res)

# 先產生乙個空物件  實列化

q = q()

q.connector = 'or' # and修改成or

# q物件裡面有乙個children

# 第乙個元素就會被當作查詢條件的左邊 第二個元素會被當作查詢條件右邊

res = models.book.objects.filter(q) # filter 除了可以放條件 還可以放物件

print(res) # 預設還是and關係

1.可以在去物件內 children裡面 無限制的新增元素 新增元組,兩個元素。

2.而且還支援修改 or and not

3.預設是and

事務:具有acid四個特性

事務的回滾:rollback

事務的確認:commit

首先需要匯入模組

from django.db import transaction
完成句式:
from django.db import transaction

try:

with transaction.atomic():

# sql語句

# sql語句

# 在with**塊內書寫的所有orm都屬於同乙個事務

except exception as e:

print(e)

print('q其他操作')

Django F查詢與Q查詢

f查詢 from django.db.models importf ret models.book.objects.filter read num gt f comment num print ret print ret.values title 結果 給全部書的 加1 models.book.ob...

Django F查詢Q查詢Only與Defel

f q查詢 測試表from django.db import models create your models here.class mycharfield models.field def init self,max length,args,kwargs self.max length max ...

Django 查詢集 F物件以及Q物件

f物件 eg 常適用於表內屬性的值的比較 模型 class company models.model c name models.charfield max length 16 c gril num models.integerfield default 5 c boy num models.int...