2016-06-17 14 views
0
emp = Employee.objects.filter(id=1) 

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

しかし、それはエラーを与える:どのようにジャンゴモデルのすべての従業員の給与に1つの従業員を比較するには?

Exception Type: ValueError

Exception Value:could not convert string to float: 'Salary'.

どのように私はこのエラーを解決することができます。

+0

ほとんど情報がありません。モデルを投稿する – e4c5

答えて

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として、あなたは本当にF() expressionsと組み合わせる.annotateを使用する場合があります。 .extraは非推奨に設定されています。

+0

エラー "TypeError: 'float'オブジェクトは反復可能ではありません" – Amit

関連する問題