代码之家  ›  专栏  ›  技术社区  ›  kovshenin

Django SQL或via filter()&Q():动态?

  •  6
  • kovshenin  · 技术社区  · 14 年前

    我在我的Django网站上实现了一个简单的类似搜索,目前我使用的是以下代码:

    from django.db.models import Q
    posts = Post.objects.filter(Q(title__icontains=query)|Q(content__icontains=query))
    

    在哪里? query LIKE SQL语句,工作正常。现在,我还想将搜索查询拆分为词或词:

    words = query.split(' ')
    

    所以 words 现在包含一个单词列表,我想实现一个类似于:

    SELECT ... FROM foo WHERE `title` ILIKE '%word1%' OR `title` ILIKE '%word2%'
      OR `content` ILIKE '%word1%' OR `content` ILIKE '%word2%'
    

    如果有两个以上的单词,我希望语句按每个单词列出所有条目。

    有什么想法吗?谢谢!

    1 回复  |  直到 9 年前
        1
  •  11
  •   Ignacio Vazquez-Abrams    14 年前
    reduce(operator.or_, sequence_of_Q_objects)