查找用户在网站上花费的总时间。

时间:2014-03-05 11:30:11

标签: mysql django orm modal-dialog

如何在Django ORM中获得两个字段的差异和?

我有一个用户活动映射的模态。我在用户登录时添加Time,并在用户注销时添加时间。

我需要将这两个字段区别开来,然后将所有实例放在一起,以获得用户在网站上花费的总时间。

User.objects.filter(**user_kwargs).annotate(
            visit_count=Count('visit_history'),
            time_on_site=Avg('visit_history__time_on_site'),
        ).filter(visit_count__gt=0).order_by('-time_on_site')

如何查找用户花费的总时间?

1 个答案:

答案 0 :(得分:0)

我认为你不能用django orm这样做。

无论如何,至少不使用原始查询。

让我重复一遍,这样你就可以验证,如果我理解正确的话。

您想要选择model.field_a和model.field_b之间的差异总和。

Django orm只允许您选择模型字段,而不是它们的差异或总和。如果你想在这里使用django orm,那么创建附加模型并使用原始查询和聚合函数。原始查询将是通过类似

创建ghost字段的查询
SELECT ..., row.one_value - row.second_value AS row.somecolumn, ... FROM foo ...

但是既然你已经需要使用纯sql来解决问题,那么我建议你完全跳过orm并使用事务和连接,只使用纯sql来获得你需要的东西。