亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

如何解決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

新化县| 华安县| 措美县| 曲沃县| 江西省| 崇义县| 偃师市| 和林格尔县| 旬邑县| 镇远县| 嘉鱼县| 屯门区| 临夏市| 巢湖市| 云南省| 新巴尔虎左旗| 澎湖县| 黑水县| 稷山县| 墨脱县| 和平区| 鄂伦春自治旗| 天全县| 油尖旺区| 巨野县| 稷山县| 上虞市| 招远市| 疏附县| 柳河县| 原平市| 定日县| 那坡县| 霞浦县| 凌源市| 彩票| 连平县| 滕州市| 奇台县| 屏南县| 望谟县|