91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決Django由save方法引發的錯誤

發布時間:2020-07-22 17:48:32 來源:億速云 閱讀:159 作者:小豬 欄目:開發技術

這篇文章主要講解了如何解決Django由save方法引發的錯誤,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

最近項目中的資產的任務狀態頻頻出現問題,查看日志文件,看代碼邏輯,也沒發現什么具體的錯誤,總是過段時間就會出現一個表的字段沒有更新的問題,很頭疼。

開始時,覺得是沒有添加事務,所以同時更新兩個不同的表,其中一個表的內容沒有寫進去;加了事務后,又出現這種問題。

后來看代碼,發現有兩個線程在同一時間先后修改同一個表,問題來了,django的save()會更新所有的字段。

舉個例子,我有兩個線程分別修改User表,thread1修改User表的name字段,thread2修改User表的email字段。

在同一個時間,這兩個線程獲取了相同的User實例, 這個時候同一個實例有兩份緩存,thread1修改了name字段,email字段不變;

thread2修改了email字段,name字段不變,這樣出來的結果不是我們所設想的那樣,name和email字段都會改變,實際上改變的只有email字段,name字段被thread2線程又寫回來了。

解決辦法:

save()函數加一個update_fields參數就好了。每一次保存的時候寫上要更新的字段

use.save(update_fields=["name"])

補充知識:Django models.save()的問題

Django views.py 引用models.py進行modles.objects.create()然后進行.save的問題。

我們是不能直接進行保存的,提交到數據庫里面的。

EX:

我們這里通過post獲取到信息后。

views.py

  def post(self, request, ab=None, all_seat=None):

    # 獲取用戶信息
    date = request.POST.get('date')
    time = request.POST.get('time')

然后

views.py

seatform = SeatForm(request.POST)
          # 提交給數據庫
          #這里的is_valid()是Django默認的,檢查是否正確
        if seatform.is_valid():
          # 這里向數據庫新增一條信息,然后保存
          getSeat = Seat.objects.create(dateTime=date, classtime=time, status='0', user=name, number=label)
          getSeat.save()

上面的SeatForm()是我們在與views.py同級目錄下創建的forms.py

forms.py

class SeatForm(forms.Form):
#注意這里的date和time需要與前端的命名要一直
  date = forms.CharField()
  time = forms.CharField()

通過這樣的方法,我們就可以保存到數據庫了。

看完上述內容,是不是對如何解決Django由save方法引發的錯誤有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

外汇| 应城市| 如皋市| 大埔区| 泊头市| 和平区| 株洲市| 阜南县| 崇阳县| 五大连池市| 武胜县| 嵊泗县| 淳化县| 资溪县| 唐山市| 垫江县| 伊川县| 芒康县| 永济市| 绵阳市| 彰化市| 永丰县| 略阳县| 达州市| 巴马| 南江县| 图木舒克市| 炉霍县| 麟游县| 大埔区| 邯郸县| 湾仔区| 巩留县| 布拖县| 商城县| 荃湾区| 竹北市| 化州市| 交城县| 孝昌县| 搜索|