고유 한 (해시) 값을 저장하기 위해 장고 모델에 필드가 있습니다. 데이터베이스 (MySQL/inno)가이 유형 (VARCHAR)에서 대소 문자를 구분하는 검색을 수행하지 않는다는 사실이 밝혀졌습니다. 단장에게 Django에 대소 문자를 구분하는 검색 Document.objects.get(hash__exact="abcd123")
을 명시 적으로 전달한 경우가 아닙니다. 따라서 "abcd123"과 "ABcd123"이 모두 반환됩니다. 원하지 않습니다. 그것은 LONGBLOB가되는 DB에 있도록Django에서 대소 문자를 구별하지만 MySQL에서 무시됩니다.
class document(models.Model):
filename = models.CharField(max_length=120)
hash = models.CharField(max_length=33)
는 I는 BinaryField에 '해시 필드'을 변경할 수 있으며, 대소 문자를 구분하는 검색을 수행 (및 작동). 그러나 이것은 나에게 매우 효율적으로 보이지 않습니다. 'utf8 COLLATE'를 추가하는 것과 같이 장고에서 더 좋은 방법이 있습니까? 또는이 상황에서 올바른 Fieldtype은 무엇입니까? (예, 대신 PostgreSQL을 사용할 수 있습니다.)
지금 데이터베이스를 변경했지만 이것이 장고에서 수행되기를 바랬습니다. 그러나 이것도 작동합니다. – FeedTheWeb
당신은 항상 utf8을 항상 사용해야합니다. 그렇지 않으면 문제가 생길 수 있습니다. –