【发布时间】:2014-08-08 17:33:03
【问题描述】:
我必须通过两个字段中列表中元素的出现来对查询集进行排序。目前我写了查找对象的部分:
self.filter((reduce(operator.or_, ((Q(tags__contains=tag) | Q(name__contains=string)) for tag in string.split(' ')))))
但我找不到正确订购的解决方案。在“标签”字段中按列表中元素的出现排序将部分解决我的问题。 但我不喜欢遍历查询集中的所有对象..
【问题讨论】:
-
你不能在 Django 端这样做,除非通过遍历查询集来计算每行匹配标签的数量并分配一个分数。您真的希望数据库为您完成这项工作,如果您使用的是 PostgreSQL,那么这将有助于github.com/djangonauts/djorm-ext-pgfulltext
标签: python django django-queryset django-q