【问题标题】:Order_By : Django Q objects order?Order_By : Django Q 对象的顺序?
【发布时间】:2016-01-05 04:07:00
【问题描述】:

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

  1. 按名称
  2. 按说明
  3. 按标题

当我得到输出结果不按顺序出现?就像我想按名称优先,然后是描述,然后是标题?

这里是示例代码

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

那么任何人都可以帮助它先按名称搜索顺序,然后按描述然后按标题搜索?

提前致谢!

【问题讨论】:

    标签: django django-q


    【解决方案1】:

    排序是由QuerySet.order_by完成的,所以除了过滤查询集之外,还要做:

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

    【讨论】:

    • 谢谢,我用过
    猜你喜欢
    • 2023-03-13
    • 2012-05-06
    • 2022-09-28
    • 2015-04-24
    • 2015-04-13
    • 2013-05-30
    • 1970-01-01
    • 2015-03-14
    • 2013-11-19
    相关资源
    最近更新 更多