最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

django使用F方法更新一個(gè)對(duì)象多個(gè)對(duì)象字段的實(shí)現(xiàn)

 更新時(shí)間:2020年03月28日 10:18:13   作者:藍(lán)綠色~菠菜  
這篇文章主要介紹了django使用F方法更新一個(gè)對(duì)象多個(gè)對(duì)象字段的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧

通常情況下我們?cè)诟聰?shù)據(jù)時(shí)需要先從數(shù)據(jù)庫(kù)里將原數(shù)據(jù)取出后放在內(nèi)存里,然后編輯某些字段或?qū)傩?,最后提交更新?shù)據(jù)庫(kù)。使用F方法則可以幫助我們避免將所有數(shù)據(jù)先載入內(nèi)存,而是直接生成SQL語(yǔ)句更新數(shù)據(jù)庫(kù)。

假如我們需要對(duì)所有產(chǎn)品的價(jià)格漲20%,我們通常做法如下。當(dāng)產(chǎn)品很少的時(shí)候,對(duì)網(wǎng)站性能沒影響。但如果產(chǎn)品數(shù)量非常多,把它們信息全部先載入內(nèi)存會(huì)造成很大性能浪費(fèi)。

products = Product.objects.all()
for product in products:
  product.price *= 1.2
  product.save()

使用F方法可以解決上述問題。我們直接可以更新數(shù)據(jù)庫(kù),而不必將所有產(chǎn)品載入內(nèi)存。

from django.db.models import F

Product.objects.update(price=F('price') * 1.2)

我們也可以使用F方法更新單個(gè)對(duì)象的字段,如下所示:

product = Product.objects.get(pk=5009)
product.price = F('price') * 1.2
product.save()

但值得注意的是當(dāng)你使用F方法對(duì)某個(gè)對(duì)象字段進(jìn)行更新后,需要使用refresh_from_db()方法后才能獲取最新的字段信息(非常重要!)。

如下所示:

product.price = F('price') + 1
product.save()
print(product.price)      # <CombinedExpression: F(price) + Value(1)>
product.refresh_from_db()
print(product.price)      # Decimal('13.00')

補(bǔ)充知識(shí):Django批量更新多個(gè)屬性

有時(shí)候我們需要同時(shí)(一次性)更新某個(gè)用戶的多條屬性。

1. 用戶model如下:

class User(models.Model):
  UID = models.CharField('員工uid', max_length=200,)
  name = models.CharField('員工名字', max_length=200,)
  mobile = models.CharField('手機(jī)號(hào)', max_length=200,)
  mail = models.EmailField(u'郵箱', max_length=200) 

2. 用戶的數(shù)據(jù)

user_info = {'UID': 'ADBES682BOEO',
      'name': '張三',
      'mobile': '12345678911',
      'mail': 'test@test.com'
      }

3. 新建用戶

User.object.create(UID='ADBES682BOEO',name='張三',mobile='12345678911',mail='test@test.com')

這就會(huì)在數(shù)據(jù)庫(kù)中新建一個(gè)張三的數(shù)據(jù)。

4. 更新數(shù)據(jù)

user_info = {'UID': 'ADBES682BOEO',
      'name': '張三2',
      'mobile': '12345678912',
      'mail': 'test2@test.com'
      }

4.1 一般的更新操作

user = User.object.get(UID='ADBES682BOEO')
user.name = user_info['name']
user.mobile = user_info['mobile']
user.mail = user_info['mail']
user.save()

4.2 批量操作

user = User.object.filter(UID='ADBES682BOEO')
user.update(**user_info)

以上這篇django使用F方法更新一個(gè)對(duì)象多個(gè)對(duì)象字段的實(shí)現(xiàn)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python中的協(xié)程深入理解

    python中的協(xié)程深入理解

    這篇文章主要給大家介紹了關(guān)于python中協(xié)程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 使用python統(tǒng)計(jì)文件行數(shù)示例分享

    使用python統(tǒng)計(jì)文件行數(shù)示例分享

    當(dāng)文件的尺寸非常大的時(shí)候(10G之上吧),想知道行數(shù)是個(gè)問題,提供一個(gè)使用python統(tǒng)計(jì)文件行數(shù)的示例,需要的朋友可以參考下
    2014-02-02
  • 解決pytorch 的state_dict()拷貝問題

    解決pytorch 的state_dict()拷貝問題

    這篇文章主要介紹了解決pytorch 的state_dict()拷貝問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2021-03-03
  • python多進(jìn)程 主進(jìn)程和子進(jìn)程間共享和不共享全局變量實(shí)例

    python多進(jìn)程 主進(jìn)程和子進(jìn)程間共享和不共享全局變量實(shí)例

    這篇文章主要介紹了python多進(jìn)程 主進(jìn)程和子進(jìn)程間共享和不共享全局變量實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-04-04
  • 基于Numba提高python運(yùn)行效率過程解析

    基于Numba提高python運(yùn)行效率過程解析

    這篇文章主要介紹了基于Numba提高python運(yùn)行效率過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Python模擬實(shí)現(xiàn)高斯分布擬合

    Python模擬實(shí)現(xiàn)高斯分布擬合

    當(dāng)我們繪制一個(gè)數(shù)據(jù)集(如直方圖)時(shí),圖表的形狀就是我們所說(shuō)的分布,最常見的連續(xù)值形狀是鐘形曲線,也稱為高斯分布或正態(tài)分布,下面我們就來(lái)利用Python模擬實(shí)現(xiàn)一下高斯分布吧
    2023-12-12
  • python一行輸入n個(gè)數(shù)據(jù)問題

    python一行輸入n個(gè)數(shù)據(jù)問題

    這篇文章主要介紹了python一行輸入n個(gè)數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • flask框架中的cookie和session使用

    flask框架中的cookie和session使用

    這篇文章主要介紹了flask框架中的cookie和session使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python如何獲取域名的SSL證書信息和到期時(shí)間

    Python如何獲取域名的SSL證書信息和到期時(shí)間

    在當(dāng)今互聯(lián)網(wǎng)時(shí)代,SSL證書的重要性不言而喻,它不僅為用戶提供了安全的連接,還能提高網(wǎng)站的搜索引擎排名,那我們?cè)趺床拍芡ㄟ^Python獲取域名的SSL證書信息和到期時(shí)間呢,下面小編就來(lái)簡(jiǎn)單講講吧
    2025-03-03
  • Pytorch如何加載自己的數(shù)據(jù)集(使用DataLoader讀取Dataset)

    Pytorch如何加載自己的數(shù)據(jù)集(使用DataLoader讀取Dataset)

    這篇文章主要介紹了Pytorch如何加載自己的數(shù)據(jù)集(使用DataLoader讀取Dataset)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評(píng)論

荔浦县| 东乌| 鄂托克前旗| 醴陵市| 东方市| 武宣县| 宾阳县| 舟山市| 莫力| 日土县| 驻马店市| 来安县| 肥乡县| 扎赉特旗| 三河市| 天峨县| 鹤壁市| 郯城县| 水富县| 木兰县| 尚义县| 金塔县| 类乌齐县| 江华| 谷城县| 偃师市| 芜湖县| 兴宁市| 石首市| 永康市| 无极县| 宣化县| 万山特区| 伽师县| 东城区| 澳门| 肇源县| 弥勒县| 通州区| 兴仁县| 武宣县|