在我们的系统中,有与“用户”对象相关联的“汽车”对象。使用子查询,我想计算一组特定的 Car 对象,对结果执行算术运算并使用该值更新 User 对象。问题是子查询是表达式,而不是整数,因此我不能将它们作为整数处理。下面的代码不起作用,但您可以看到我想要实现的目标。这应该怎么做?
def get_car_data():
since = timezone.now() - timedelta(days=3)
car_count = Subquery(
Car.objects.filter(
car__user=OuterRef("user"),
car__user__blocked=False,
created__gte=since,
)
.values("car__user")
.annotate(count=Count("car__user"))
.order_by()
.values("count")
)
return {
"car_count": Coalesce(car_count, 0, output_field=IntegerField())
}
def calculate_values(bonus):
data = get_car_data()
# THIS DOES NOT WORK
User.objects.update(car_bonus_counter=data["car_count"] * bonus + 100)