如何在 Django 中创建一个查询集来查看数据库中的名称是否是我的查询字符串的子字符串?

2023-12-02

正如标题所提到的,我正在 Django 中工作,并尝试创建一个查询集来返回所有名称值是我的 query_string 的子字符串的“客户”模型。

我想要这样的东西:

Customer.objects.filter(firstName__icontains=query_string)

但反过来说:

Customer.objects.filter(query_string__icontains=firstName)

但这显然行不通。

我正在努力寻找有关如何解决此问题的任何信息。

提前致谢。

Edit我的预期输入将是日语 - 假名和汉字 かな、カナ、汉字


您可以定义一个自定义查找。下面这个是 Postgres 特有的:

class LowerContainedBy(Lookup):
    lookup_name = 'icontained_by'

    def as_sql(self, compiler, connection):
        lhs, lhs_params = self.process_lhs(compiler, connection)
        rhs, rhs_params = self.process_rhs(compiler, connection)
        params = lhs_params + rhs_params
        return f"LOWER({rhs}) LIKE '%%' || LOWER({lhs}) || '%%'", params

CharField.register_lookup(LowerContainedBy)

然后你可以这样做:

Customer.objects.filter(firstName__icontained_by=query_string)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Django 中创建一个查询集来查看数据库中的名称是否是我的查询字符串的子字符串? 的相关文章