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

时间:2015-01-01 11:03:53

标签: python django facebook facebook-graph-api

我正在创建一个需要查找我存储在数据库中的facebook用户名的应用程序,但是facebook用户名既不区分大小写又对句点不敏感。例如,用户名Johnsmith.55与johnsmith55或甚至j ... O.hn.sMiTh.5.5相同。发送facebook API请求时。 显然,我使用_iexact查询命令来解决不区分大小写的问题,但是我可以使用什么来弥补对句点的不敏感性呢?我知道一个cop out方法只是在剥离句点后将所有用户名保存到数据库中,同时剥离正在搜索其句点的用户名,然后查询,但我想保存并显示用户的用户名,就像它们真正出现的那样在他们的Facebook URL(包括句点)中,即使facebook API请求在技术上对句点不敏感。

有关这种简单方法的任何想法吗?在此先感谢您的任何帮助

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

但是,如果您不想这样做,那么在查询之前从Facebook忽略的字符中清除字符串很简单:

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

注意:此示例忽略点和逗号,Facebook可能会忽略不止这些。

答案 2 :(得分:1)

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