如何比较django模型中的一名员工与所有员工的工资?

时间:2016-06-17 23:26:48

标签: python django django-models

emp = Employee.objects.filter(id=1)

Persons =  Employee.objects.extra(select={'difference':(emp.values_list("Salary",flat=True)[0]-float('Salary'))})

但它给出错误:

  

异常类型:ValueError

     

异常值:无法将字符串转换为浮点数:'薪水'。

如何解决此错误。

1 个答案:

答案 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,您可能真的想将.annotateF() expressions结合使用。 .extra已设置为弃用。