我在Django模型中有一个用于存储唯一(哈希)值的字段。结果发现数据库(MySQL/inno)不对此类型(VARCHAR)进行区分大小写的搜索,即使我明确告诉Django要进行区分大小写的搜索Document.objects.get(hash__exact="abcd123")
。因此,"abcd123"和"ABcd123"都会被返回,而这不是我想要的。
class document(models.Model):
filename = models.CharField(max_length=120)
hash = models.CharField(max_length=33 )
我可以将“哈希字段”更改为BinaryField,这样在数据库中它就变成了LONGBLOB,并且确实进行了区分大小写的搜索(并且有效)。但是,这对我来说似乎不太高效。 在Django中是否有更好的方法来做到这一点,例如添加“utf8 COLLATE”?或者在这种情况下应该使用什么正确的字段类型? (是的,我知道我可以改用PostgreSQL..)