我已經查看了QuerySet API參考,找不到任何可以獲取特定字段實際值(小數點)的值目的。Django - 如何獲取對象的小數位字段的值
我試過的一切都沒有將它作爲實際的十進制值返回。例如,Hours.objects.filter(全名=全名).values(小時)不會將小時數作爲十進制值返回。我試圖獲取用戶的小時數,數學上加一個數字(例如15.5 + 4.25)並保存(如19.75)。
我已經查看了QuerySet API參考,找不到任何可以獲取特定字段實際值(小數點)的值目的。Django - 如何獲取對象的小數位字段的值
我試過的一切都沒有將它作爲實際的十進制值返回。例如,Hours.objects.filter(全名=全名).values(小時)不會將小時數作爲十進制值返回。我試圖獲取用戶的小時數,數學上加一個數字(例如15.5 + 4.25)並保存(如19.75)。
如果我正確理解您的問題,您需要過濾小時表中的對象並更新它的值。
首先請注意,這個result = Hours.objects.filter(fullname=fullname).values('hours')
返回的是字典列表,而不是十進制的列表。所以如果你需要得到hours
你應該這樣做hour = result[0].get('hours')
。但在此之後,你不能做hours = hours + 1.5
。由於hours
有Decimal類型,你應該轉換1.5這是第一次浮到十進制:
import decimal
result = Hours.objects.filter(fullname=fullname).values('hours')
hour = result[0].get('hours')
hour_difference = decimal.Decimal(1.5)
hour = hour + hour_difference
但隨着Django的,你可以進行更新更加容易。只需使用update:
Hours.objects.filter(fullname=fullname).update(hours=20.5)
如果你需要增加電流值,那麼你可以用F expression做到這一點:
from django.db.models import F
Hours.objects.filter(fullname=fullname).update(hours=F('hours') + 1.5)
這將讓所有的時間物體過濾有關添加到它的hours
場1.5
和保存它。
我用最後一個,它的工作;謝謝。 –
你的小時模型是什麼樣的? –
它應該是'.values(「小時」)'(注意引號)的初學者。如果沒有發佈你的'models.py',我們不能再多說了。 – Selcuk