2017-07-28 10 views
1

私は、ビジネスロジックがどのように「完全」であるかを示すパーセントでクエリに注釈を付けることを試みています。その割合が100%を超えることは望ましくありません。私は現在、私のクエリでこれを持っている:CombinedResponseオブジェクトの値とintを比較するにはどうすればよいですか?

.annotate(completion=max(100, Count('id')/F('something_tricky')) 

問題はCount/FがunorderableあるCombinedExpression、ですので、maxで使用することができないということです。それは私はどちらかintにキャストさせません。

のint()の引数は、文字列、バイトのようなオブジェクトまたは番号ではなく、「CombinedExpression」

かになければなりません文字列。

completionの値をこのクエリからintとして取得するにはどうすればよいですか?

+0

'output_field'を試しましたか? –

+0

申し訳ありません、私は 'convert_value'を意味します。 –

答えて

1

アノテーションにデータベース機能を使用する必要があります。ケースでは、Greatest機能です。

from django.db.models import Value 
from django.db.models.functions import Greatest 

.annotate(completion=Greatest(Value(100), Count('id')/F('something_tricky')) 
関連する問題