在我的问题的简化版本中,我有一个模型文档,它与Tag有许多关系。我想要一个查询,给定一个标签列表将按照它们与标签匹配的顺序对文档进行排序,即首先显示匹配更多标签的文档,然后显示匹配较少标签的文档。我知道如何使用大型纯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",然后是只匹配其中一个的文档,最后是不匹配的文档。
提前感谢您的帮助。