【发布时间】:2015-03-20 08:51:47
【问题描述】:
我在 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”?或者在这种情况下正确的 Fieldtype 是什么? (是的,我知道我可以使用 PostgreSQL 代替......)
【问题讨论】: