Django 操作補充

2022-07-20 06:45:11 字數 2392 閱讀 7421

1,f查詢

django提供f()來做比較,f()的例項可以在查詢中引用字段,來比較同乙個model例項中的兩個不同欄位的值。

查詢賣出數大於庫存數的商品:

res = models.product.objects.filter(maichu__gt=f('

kucun

'))#

取出kukun欄位的數值來進行比較

print(res)

將所有的商品的**提高100塊:

models.product.objects.update(price=f('

price

')+100) #

f()取出的數值可以進行運算

將所有商品的名字後面都加乙個爆款:

#

匯入修改char型別所需要的模組

from django.db.models.functions import

concat

from django.db.models import

value

models.product.objects.update(name=concat(f('

name

'),value('

爆款')))

2,q查詢

filter()等方法中逗號中隔開的條件是與的關係。如果你需要執行更複雜的查詢(例如or查詢),你需要使用q物件

查詢**為188.88或者名字叫連衣裙爆款的商品:

res = models.product.objects.filter(q(price=188.88)|q(name='

連衣裙爆款

')) #

or

查詢**為188.88或者名字不叫連衣裙爆款的商品:

res = models.product.objects.filter(q(price=188.88)|~q(name='

連衣裙爆款

')) #

or not

查詢**為188.88並且名字不叫連衣裙爆款的商品:

res = models.product.objects.filter(~q(name='

連衣裙爆款

'),price=188.88)

q查詢補充:

查詢**是188.88或者名字叫高跟鞋爆款的商品(字串查詢)

from django.db.models import

f, q

q =q()

q.connector = 'or'

#通過這個引數可以將q物件預設的and關係變成or

price

',188.88))

'name

','高跟鞋爆款'))

res = models.product.objects.filter(q) #

q物件查詢預設也是and

print(res)

事物的定義:將多個sql語句操作變成原子性操作,要麼同時成功,有乙個失敗則裡面回滾到原來的狀態,保證資料的完整性和一致性(nosql資料庫對於事務則是部分支援)

ps:事物的acid指的是:a:原子性 c:一致性 i:隔離性 d:永續性

#

開啟事務處理

from django.db import

transaction

from django.db.models import

f

try:

with transaction.atomic():

#在with**塊兒寫你的事務操作

models.product.objects.filter(id=1).update(kucun=f('

kucun

')-1)

models.product.objects.filter(id=1).update(maichu=f('

maichu

')+1)

except

exception as e:

print(e)

res = models.product.objects.only('

name')

res = models.product.objects.defer('

name

') #

only與defer 拿到的是乙個物件 兩者是相反的

res = models.product.objects.filter(id=1).first()

print

(res.gender)

print(res.get_gender_display()) #

獲取編號對應的中文注釋

django之Form元件補充

自定義驗證規則 方法一 from django.forms import form from django.forms import widgets from django.forms import fields from django.core.validators import regexval...

Dom操作補充

dom查詢方式 直接查詢 var obj document.getelementbyid i1 間接查詢 檔案內容操作 innertext 僅僅查詢文字內容 innerhtml 查詢全部內容 文字和標籤 舉例 doctype html html lang en head meta charset u...

ibatis批量操作補充

ibatis批量操作 這文章的補充吧。review 的時候發現乙個頁面應用排序設定功能,原先 中,進行了迴圈update實現。雖然應用較少,不過無謂浪費資料庫鏈結實在不是乙個好的想法。所以,我覺得應該杜絕迴圈中的任何資料可操作才能避免很多地雷的埋下。修改後 批量更新語句的寫法,基於ibatis,只使...