【发布时间】:2015-12-08 12:21:32
【问题描述】:
我有一个模型,它有一个以逗号分隔的标签列表的标签字段。给定一个标签字符串列表,我构建了一个查询集,用于查找我的模型中至少包含一个标签的实例。我有这样的工作:
tag_list = ["tag1", "tag2"]
MyModel.objects.filter(
reduce(
lambda x, y: x | y, [Q(tags__icontains=tag) for tag in tag_list]))
但是现在我想按每个项目具有的匹配标签的数量以降序对查询集进行排序。我一直在尝试找到正确的方法来注释包含匹配计数但运气不佳的字段。有什么指点吗?
【问题讨论】:
-
我认为在 python 中而不是在数据库中进行排序会更有效。一旦你得到一个至少有一个标签的
list对象,你可以使用传递给排序比较的MyModel.tags.count()属性对其进行排序 - 这就像根据一个整数字段对对象列表进行排序一样跨度>
标签: python django django-queryset