Order_By:Django Q对象命令?

时间:2015-10-07 19:08:29

标签: django django-q

我正在使用operator.or_并将Query()对象传递给它。 Query()对象包含3个查询,即

  1. 按名称
  2. 描述
  3. by title
  4. 当我收到输出时,结果不按顺序排列?就像我想要名字然后首先描述然后标题?

    以下是示例代码

    def search(self, search_terms, filters, category=False, vendor=False):
        terms = [term.strip() for term in search_terms.split()]
        q_objects = []
        if terms:
            for term in terms:
                    q_objects.append(Q(name__icontains=search_terms))
                    q_objects.append(Q(description__icontains=search_terms))
                    q_objects.append(Q(title__icontains=search_terms))
        qs = self.get_query_set()
        if len(q_objects) > 1:
            return qs.filter(reduce(operator.or_, q_objects))
        else:
            return qs
    

    那么任何人都可以通过描述然后标题首先按名称搜索订单吗?

    提前致谢!

1 个答案:

答案 0 :(得分:3)

排序由QuerySet.order_by完成,因此除了过滤查询集之外,请执行以下操作:

qs = qs.order_by('name', 'description', 'title')