2017-07-28 103 views
1

我試圖用一個百分比註釋一個查詢來表示業務邏輯是如何「完整」的。我不希望這個百分比超過100%。我現在有這在我的查詢:如何比較CombinedResponse對象值與int?

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

問題是Count/FCombinedExpression,這是unorderable,所以不能在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'))