2024-05-23 20:05:43 发布
网友
我查看了querysetapi引用,没有找到任何东西可以让我获得特定对象字段的实际值(十进制)。在
我尝试过的所有方法都不会将其作为实际的十进制值返回。例如,Hours.objects.filter(fullname=fullname).values(hours)不以十进制值的形式返回小时数。我试图得到一个用户的小时数,用数学方法加上一个数字(例如15.5+4.25),然后把它存回去(如19.75)。在
如果我正确地理解了您的问题,您需要过滤Hours表中的对象并更新它的值。在
首先请注意,result = Hours.objects.filter(fullname=fullname).values('hours')返回的是dicts列表,而不是Decimal列表。所以如果你需要得到hours,你应该这样做hour = result[0].get('hours')。但是在这之后你就不能做hours = hours + 1.5。因为hours具有Decimal类型,您应该先将1.5(浮点值)转换为十进制值:
result = Hours.objects.filter(fullname=fullname).values('hours')
hours
hour = result[0].get('hours')
hours = hours + 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:
如果需要增加当前值,则可以使用F expression:
from django.db.models import F Hours.objects.filter(fullname=fullname).update(hours=F('hours') + 1.5)
这将获得所有与filter相关的Hours对象添加到它的hours字段1.5并保存它。在
1.5
如果我正确地理解了您的问题,您需要过滤Hours表中的对象并更新它的值。在
首先请注意,
result = Hours.objects.filter(fullname=fullname).values('hours')
返回的是dicts列表,而不是Decimal列表。所以如果你需要得到hours
,你应该这样做hour = result[0].get('hours')
。但是在这之后你就不能做hours = hours + 1.5
。因为hours
具有Decimal类型,您应该先将1.5(浮点值)转换为十进制值:但是使用Django可以使更新更容易。只需使用update:
^{pr2}$如果需要增加当前值,则可以使用F expression:
这将获得所有与filter相关的Hours对象添加到它的
hours
字段1.5
并保存它。在相关问题 更多 >
编程相关推荐