我试图使用一个百分比来批注查询,该百分比表示如何完成"完成"业务逻辑是。我不希望这个百分比超过100%。我目前在我的查询中有这个:
.annotate(completion=max(100, Count('id')/F('something_tricky') )
问题是Count/F
是CombinedExpression
,这是无法解决的,因此无法在max
中使用。它不会让我把它投到int
:
int()参数必须是字符串,类似字节的对象或数字,而不是' CombinedExpression'
或者字符串。
如何从此查询中获取completion
值作为int?
答案 0 :(得分: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') )