emp = Employee.objects.filter(id=1)
Persons = Employee.objects.extra(select={'difference':(emp.values_list("Salary",flat=True)[0]-float('Salary'))})
但它给出错误:
异常类型:ValueError
异常值:无法将字符串转换为浮点数:'薪水'。
如何解决此错误。
答案 0 :(得分:0)
'Salary'
确实是一个字符串,而不是一个数字。所以python无法进行转换。你不想要字符串'Salary'
,你想要字段Salary
。为此,您需要使用Django F() expressions。
或者在这里,在.extra(select...
的上下文中,我相信Django只是期待一个SQL字符串。例如:.extra(select={'diff': "%f - salary"}, select_params=emp.Salary)
但是作为docs for extra explain,您可能真的想将.annotate与F() expressions结合使用。 .extra
已设置为弃用。