繁体   English   中英

Django-如何获取对象的十进制字段的值

[英]Django - How to get the value of a decimal field of object

我已经查看了QuerySet API参考,但找不到任何可以获取特定对象字段的实际值(以十进制表示)的东西。

我尝试过的所有操作都不会将其返回为实际的十进制值。 例如,Hours.objects.filter(fullname = fullname).values(hours)不会返回小时数作为十进制值。 我试图获取用户的小时数,以数学方式向其添加一个数字(例如15.5 + 4.25)并将其保存回去(为19.75)。

如果我正确理解了您的问题,则需要在“小时”表中过滤对象并更新其值。

首先请注意,此result = Hours.objects.filter(fullname=fullname).values('hours')返回result = Hours.objects.filter(fullname=fullname).values('hours')列表,而不是Decimal列表。 因此,如果您需要获取hours ,则应执行以下hour = result[0].get('hours') 但是在此之后,您将无法执行hours = hours + 1.5 由于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

    Hours.objects.filter(fullname=fullname).update(hours=20.5)

如果需要增加当前值,则可以使用F表达式

from django.db.models import F

Hours.objects.filter(fullname=fullname).update(hours=F('hours') + 1.5)

这会将与过滤器相关的所有小时对象添加到hours字段1.5并保存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM