【发布时间】:2014-05-16 03:08:47
【问题描述】:
我遇到了一个无法解释的问题。
给定一个对象(在本例中为“文章”),我想使用另一种类型的对象(在本例中为“类别”)来确定哪些其他文章与文章 X 最相似,测量方式为它们共有的类别数量。文章和类别之间的关系是多对多的。用例是获取相关对象的快速列表以显示为链接。
我完全知道如何手写 SQL:
select
ac.article_id
from
Article_Category ac
where
ac.category_id in
(
select
category_id
from
Article_Category
where
article_id = 1 -- get all categories for article in question
)
and ac.article_id <> 1
group by
ac.article_id
order by
count(ac.category_id) desc, random() limit 5
我正在苦苦挣扎的是如何使用 Django 模型聚合来匹配这个逻辑并且只运行一个查询。我会注意到的。如果可能的话,更喜欢在框架内进行。有人对此有意见吗?
【问题讨论】:
-
如果raw queries不容易用django ORM语法表达,运行没有错。
-
感谢您的快速回复。我当然可以运行原始查询,我只是想确保我不会错过使用 ORM 语法实现它的简单方法。我对使用它还很陌生。
-
有些事情 django ORM 还没有涵盖(而且可能永远不会)。这就是他们提供原始查询的原因。
-
既然你已经找到了答案——你可以answer your own question然后接受你的答案。这样,问题就结束了,其他人就会知道哪种解决方案有效。