第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

增量模型字段內(nèi)部獲取或創(chuàng)建 Django

增量模型字段內(nèi)部獲取或創(chuàng)建 Django

人到中年有點(diǎn)甜 2022-09-27 16:41:19
我正在開發(fā)一個音樂Web應(yīng)用程序,我試圖計(jì)算一首歌的播放次數(shù)。單擊播放按鈕時,將調(diào)用一個名為的函數(shù)。在這里,我嘗試使用來更新模型,如下所示。getLink()get_or_createPlayCounth = PlayCount.objects.all()    if len(h) == 0:        u = PlayCount.objects.get_or_create(            user=request.user.username,            song=song,            plays=1,        )[0]        u.save()    else:        flag = False        for i in h:            if i.song == song:                u = PlayCount.objects.get_or_create(                    user=request.user.username,                    song=song,                    plays=plays + 1,                )[0]                u.save()                flag = True                break            else:                pass        if flag is False:            u = PlayCount.objects.get_or_create(                user=request.user.username,                song=song,                plays=1,            )[0]            u.save()        else:            pass但是,當(dāng)我進(jìn)入 else 循環(huán)時,返回 。127.0.0.1:8000play is not defined我該如何繼續(xù)?
查看完整描述

1 回答

?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個贊

我不明白為什么你循環(huán)遍歷所有對象,而你所需要的只是找到特定和.PlayCountusersong


另請注意,只會找到與您傳遞給它的所有參數(shù)匹配的特定對象,因此將嘗試查找具有您指定的確切播放次數(shù)的對象,該對象不是您想要的。get_or_createget_or_create(user=..., song=..., plays=...)


您只需執(zhí)行以下操作:


from django.db.models import F


play_counter, created = PlayCount.objects.get_or_create(

    user=request.user,

    song=song,

    defaults={'plays': 1})

if not created:

    play_counter.plays = F('plays') + 1

    play_counter.save()

因此,在這里,我們首先獲取或創(chuàng)建特定歌曲和用戶的計(jì)數(shù)器。如果我們創(chuàng)建它,我們通過在參數(shù)中設(shè)置它來設(shè)置為1。playsdefaults


然后,如果未創(chuàng)建它(即它是現(xiàn)有的),我們使用表達(dá)式遞增1,這可確保它直接在數(shù)據(jù)庫中更新(并且如果另一個請求正在更新相同的值,則不會有數(shù)據(jù)庫不一致的風(fēng)險)。playsF


查看完整回答
反對 回復(fù) 2022-09-27
  • 1 回答
  • 0 關(guān)注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號