繁体   English   中英

计算Django中的多个列和顺序

[英]Count Multiple Columns in Django and Order

我们的数据库中有一个名为Analysis的表,该表的每个对象都存储特定于构建的信息。 不幸的是,由于最初建立数据库的方式的局限性,我们将此信息存储在两列中:build_info和build。 分析对象将只具有其中一个有效字段,另一个将为NULL(因此,您不能拥有build_info并将build作为同一对象的某个值)。

我想要做的就是在此表中获得最多的特定于构建的列数。 SQL查询非常简单。 Django ORM查询(当然)稍微复杂一些。 这是我想要的确切SQL查询(这恰好返回我需要的信息):

select build_info, build_id, count(*) as build_count
from analysis
group by build_info, build_id
order by build_count desc

很简单 到目前为止,这是Django查询的内容(请注意,该查询尚不起作用:

Analysis.objects.values("build_info", "build").annotate(build_info_count = Count("build_info"), build_count = Count("build")).order_by([?!?!?])

挂断发生在order_by()调用中。 当前,返回的QuerySet具有两个不同的计数列:build_info_count和build_count。 我需要做的是通过build_info_count和build_count的组合对返回的QuerySet进行排序,但是order_by()函数仅采用一个参数,而且我还找不到一种组合多个Count()对象的方法。

有没有一种方法可以计算Django中的多列? 或至少将单个列的计数合并为一个? 还是有其他方法可以完成上述SQL查询?

我最终做了一个原始查询。 Django ORM非常适合很多东西,但是在原始SQL查询中,任何过于复杂的事情都更好(性能也更好)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM