【问题标题】:Django: Search products starting with query => product_name__starswith=queryDjango:搜索以 query => product_name__starswith=query 开头的产品
【发布时间】:2022-01-10 02:13:56
【问题描述】:

产品型号

class Products(models.Model):
    product_name = models.CharField(max_length=120)

查询集

Products.objects.filter(product_name__startswith=query)

我只想查找以搜索 query 开头的所有产品。

例如:当我搜索 ca 时,它会返回

car
car cover

当我搜索 car cover 时,它只会返回

car cover

但我希望它在第二次搜索中也返回 car。有什么可能的方法吗?请帮我。谢谢。

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    请在下面尝试,它可能会有所帮助:

    Products.objects.filter(product_name__contains=query)
    

    这里会搜索product_name中是否有“query”。

    【讨论】:

    • 当查询包含字段值时,OP 需要一个解决方案,反之则不然。
    • 我希望结果以查询值开头。
    【解决方案2】:

    您可以通过使用 Value 注释搜索的字符串文字并将其与 F 一起使用来做到这一点:

    # `query` supposed given
    
    products = Products.objects.annotate(
        query=Value(query, output_field=CharField())
    ).filter(
        query=F("product_name")
    ).all()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-18
      • 2020-08-18
      • 1970-01-01
      • 2012-07-23
      • 1970-01-01
      • 2020-06-04
      • 1970-01-01
      相关资源
      最近更新 更多