如何在django注释中进行计算?

How to make calculation inside django annotate?

这个当我运行产生错误:

qs = UserLocation.objects.annotate(distance=0.5 - cos((F('lat')-lat1)*p)/2 + cos(lat1*p) * cos(F('lat')*p) * (1-cos((F('long')-lon1)*p))/2).all()

它产生的错误是这个:

must be real number, not CombinedExpression

如何将计算作为注释

尝试按照此处所述添加 ExpressionWrapper: https://docs.djangoproject.com/en/3.2/ref/models/expressions/#using-f-with-annotations

qs = UserLocation.objects.annotate(distance=ExpressionWrapper(0.5 - cos((F('lat')-lat1)*p)/2 + cos(lat1*p) * cos(F('lat')*p) * (1-cos((F('long')-lon1)*p))/2).all(), output_field=FloatField())

我可能漏掉了一些 ) 因为你的计算很复杂,我假设结果是一个浮点数