首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找用户在网站上花费的总时间。

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

Stack Overflow用户
提问于 2014-03-05 11:30:10
回答 1查看 180关注 0票数 0

如何在Django ORM中求出两个字段的差和?

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

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

代码语言:javascript
复制
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')

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-05 12:21:50

我想你不能用django orm做这个。

至少在不使用原始查询的情况下是不会的。

让我重复一遍,这样你就可以核实,如果我没听错的话。

您要选择model.field_a和model.field_b之间的差额之和。

Django orm只允许您选择模型字段,而不是它们的差异或和。如果您想在这里使用django orm,那么创建additonal模型并使用原始查询和聚合函数。原始查询将是创建鬼字段的查询,方法是具有以下内容

代码语言:javascript
复制
SELECT ..., row.one_value - row.second_value AS row.somecolumn, ... FROM foo ...

但是,由于您已经需要使用纯sql,所以我建议您完全跳过orm,使用事务和连接以及纯sql来获取所需的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22196454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档