2016-12-20 106 views
0

我已經查看了QuerySet API參考,找不到任何可以獲取特定字段實際值(小數點)的值目的。Django - 如何獲取對象的小數位字段的值

我試過的一切都沒有將它作爲實際的十進制值返回。例如,Hours.objects.filter(全名=全名).values(小時)不會將小時數作爲十進制值返回。我試圖獲取用戶的小時數,數學上加一個數字(例如15.5 + 4.25)並保存(如19.75)。

+0

你的小時模型是什麼樣的? –

+1

它應該是'.values(「小時」)'(注意引號)的初學者。如果沒有發佈你的'models.py',我們不能再多說了。 – Selcuk

回答

1

如果我正確理解您的問題,您需要過濾小時表中的對象並更新它的值。

首先請注意,這個result = Hours.objects.filter(fullname=fullname).values('hours')返回的是字典列表,而不是十進制的列表。所以如果你需要得到hours你應該這樣做hour = result[0].get('hours')。但在此之後,你不能做hours = hours + 1.5。由於hoursDecimal類型,你應該轉換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) 

這將讓所有的時間物體過濾有關添加到它的hours1.5和保存它。

+1

我用最後一個,它的工作;謝謝。 –

相關問題