聚合中的Django聚合子查询

时间:2020-06-02 08:07:41

标签: django django-orm

我想做的是从多个模型创建一个聚合,但是我很难让它作为一个查询工作。

例如,如果我有两个模型,例如:

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,但它们似乎依赖于外键关系,在我的情况下不存在。

是否仍然可以将其简化为单个查询?

0 个答案:

没有答案