1

在我的问题的简化版本中,我有一个模型文档,它与标签有很多关系。我想要一个查询,给定的标签列表将按照与标签匹配的顺序对文档进行排序,即首先显示匹配更多标签的文档,稍后显示匹配较少标签的文档。我知道如何使用大型纯 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”的文档,然后获取仅匹配其中一个的文档,最后获取不匹配的文档。

在此先感谢您的帮助。

4

1 回答 1

0

看看这个:How to sort by annotated Count() in a related model in Django

一些文档:https ://docs.djangoproject.com/en/1.6/topics/db/aggregation/#order-by

于 2013-08-09T15:46:04.070 回答