代码之家  ›  专栏  ›  技术社区  ›  Hossein Sayyedmousavi

带有包含语句的django-orm在对象中的查询

  •  1
  • Hossein Sayyedmousavi  · 技术社区  · 2 年前

    我有这样的城市:

    In [99]: City.objects.filter(title='Hamilton')
    Out[99]: <QuerySet [<City: hamilton>]
    

    我有这样的句子:

    句子=“3101A 1280 Main Street West Hamilton ON L8S 4K1”

    我怎样才能找到包含这句话标题的城市?

    注意:我用过这个方法,但它不是真的。因为这个查询对于django中的list not string很有用:

    In [100]: City.objects.filter(slug__in=sentence)
    Out[100]: <QuerySet []>
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   willeM_ Van Onsem    2 年前

    您可以使用 Contains 查找 不区分大小写的子字符串 搜索

    from django.db.models import F, Value
    from django.db.models.lookups import Contains
    
    City.objects.filter(Contains(Value(sentence), F('title')))

    使用时 __icontains lookup [Django-doc] 生成文本的结果,这通常仍然是一种糟糕的搜索方式,因为它只会获取具有精确字符串的项目 Elastic 或 Solr ,或者可以使用 PostgreSQL s __search lookup [Django-doc] .