我想做的是从多个模型创建一个聚合,但是我很难让它作为一个查询工作。
例如,如果我有两个模型,例如:
class DailyUsers(model.Model):
date = models.DateField()
shop_id = models.IntegerField()
users = models.IntegerField()
class DailySpend(model.Model):
date = models.DateField()
shop_id = models.IntegerField()
amount = models.IntegerField()
我可以创建以下聚合:
total_spend = models.DailySpend.objects.filter(
date__range=["2020-01-01", "2020-01-05"],
shop_id__in=[1, 2, 3],
).aggregate(total_spend=Coalesce(Sum("amount"), 0))
total_users = models.DailyUsers.objects.filter(
date__range=["2020-01-01", "2020-01-05"],
shop_id__in=[1, 2, 3],
).aggregate(total_users=Coalesce(Sum("users"), 0))
total_users["total_spend"] = total_spend["total_spend"]
>> {"total_users": int, "total_spend": int}
但是,这使用两个查询,我想知道是否可以使用Subquery
进行单个查询?我看过docs以及其他相关的questions,但它们似乎依赖于外键关系,在我的情况下不存在。
是否仍然可以将其简化为单个查询?