由于我们的数据库的整理方式,它们会忽略用户名和密码的大小写,我们目前无法在数据库级别进行修复。从这个线程看来WHERE BINARY 'something' = 'Something'
应该可以解决问题,但我无法弄清楚让 Django 插入BINARY
。有小费吗?
问问题
1459 次
1 回答
1
我认为没有一种简单的方法可以强制 Django 在查询内容中添加一些内容。
您可能想简单地在 Django 中编写一个原始 SQL 查询,以获取通过区分大小写比较过滤的对象,然后在普通查询中使用它们。
另一种方法是使用 Django 区分大小写的过滤器来获得相同的结果。例如contains
/startswith
两者都使用BINARY LIKE
并且可以在比较具有相同长度的两个字符串时使用(如密码哈希))。最后,您可以使用regexp
来进行区分大小写的比较。但在那种情况下,这些都是相当丑陋的方法。它们有不必要的开销,您应该尽可能避免它们。
于 2012-05-29T23:19:00.053 回答