【问题标题】:Sorting by many to many relationship按多对多关系排序
【发布时间】:2013-08-09 12:55:16
【问题描述】:

在我的问题的简化版本中,我有一个模型文档,它与标签有很多关系。我想要一个查询,给定标签列表将按照与标签匹配的顺序对文档进行排序,即首先显示匹配更多标签的文档,稍后显示匹配较少标签的文档。我知道如何使用大型纯 SQL 查询来做到这一点,但我很难让它与查询集一起使用。有人可以帮忙吗?

class Document(model.Model): 
    title = CharField(max_length = 20)
    content = TextField()

class Tag(model.Model):
    display_name = CharField(max_length = 10)
    documents = ManyToManyField(Document, related_name = "tags")

我想做如下的事情:

documents = Documents.objects.all().order_by(count(tags__in = ["java", "python"]))

首先获取同时匹配“java”和“python”的文档,然后是只匹配其中一个的文档,最后是不匹配的文档。

提前感谢您的帮助。

【问题讨论】:

    标签: django django-models django-queryset


    【解决方案1】:

    【讨论】:

    • 这个例子和文档有所帮助,但最后我不得不做 2 次查询。一个用于订购具有一个或多个请求标签的文档,另一个用于订购没有任何标签的文档。我找不到用一个查询对所有文档进行排序的方法。
    猜你喜欢
    • 2011-08-23
    • 2015-07-28
    • 2014-08-25
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 2011-06-22
    相关资源
    最近更新 更多