Django:如何查询标点符号(即:!.;')不敏感的术语?

Django: How to query terms with punctuation (ie: !.;’) insensitivity?

我正在创建一个需要查找我存储在数据库中的 facebook 用户名的应用程序,但 facebook 用户名既不区分大小写,也不区分句点。例如,用户名 Johnsmith.55 与 johnsmith55 甚至 j…O.hn.sMiTh.5.5 相同。发送 facebook API 请求时。 显然,我正在使用 _iexact 查询命令来补救不区分大小写的问题,但是我可以使用什么来补救对句点不敏感的问题呢?我知道一种逃避方法就是在去除所有用户名的句点后将所有用户名保存到数据库中,同时去除正在搜索的用户名的句点然后查询,但我想保存和显示人们的用户名的真实方式在他们的 facebook URL(包括句点)中,尽管 facebook API 请求在技术上对句点不敏感。

有没有关于执行此操作的简单方法的想法?在此先感谢您的帮助

您需要存储两种版本的用户名:一种用于查询,一种用于显示。

您可以在数据库中存储两个用户名,一个用于查询,一个用于显示。

但是,如果您不想这样做,只需在查询前从 Facebook 忽略的字符中清除字符串即可:

# ... import 're' and pull username from DB
normalized_username = re.sub('[,.]', '', real_username)
# query using the normalized username

注意:这个例子忽略了点和逗号,Facebook 可能会忽略更多。

您还可以在 Django 1.7 或更高版本中使用自定义查找实现您自己的查询 loguc。