Django区分大小写搜索

Django区分大小写搜索,django,Django,我有问题。我有这样的模型: class Teams(models.Model): Name = models.CharField(max_length=200) Short_name = models.CharField(max_length=200, default = "-") models.Teams.objects.filter(SHort_name__exact = "Har"): 当我用短名称搜索团队时,如Har: models.Teams.objects.fi

我有问题。我有这样的模型:

class Teams(models.Model):
    Name = models.CharField(max_length=200)
    Short_name = models.CharField(max_length=200, default = "-")
 models.Teams.objects.filter(SHort_name__exact = "Har"):
当我用短名称搜索团队时,如Har:

models.Teams.objects.filter(SHort_name = "Har")
我用HAR和HAR得到结果。 即使我这样尝试:

class Teams(models.Model):
    Name = models.CharField(max_length=200)
    Short_name = models.CharField(max_length=200, default = "-")
 models.Teams.objects.filter(SHort_name__exact = "Har"):
我得到的结果是一样的 “短名称”列采用utf8mb4\U general\U ci格式,因此它应该是ok,并且数据库连接具有以下选项:

'OPTIONS': {'charset': 'utf8mb4', 'use_unicode': True},

我不知道哪里出了问题,也不知道如何得到准确的结果

在数据库中使用utf8bin或utf8mb4\u-bin排序规则,这在过去对我起到了作用


希望这能有所帮助。

基于您的问题,我假设您使用的是MySQL。当不使用二进制排序规则时,MySQL执行不区分大小写的字符串比较

您的问题在数据库级别,Django无法在不转换每个查询的排序规则的情况下解决它。在utf8\u bin或其他*\u bin中更改您的排序规则,您将被设置为:

默认情况下,对于UTF-8数据库,MySQL将使用utf8\u general\u ci排序规则。这将导致以不区分大小写的方式进行所有字符串相等性比较。也就是说,Fred和Fred在数据库级别被认为是平等的。。。如果要对特定列或表进行区分大小写的比较,请将该列或表更改为使用utf8\u bin排序规则


就是这样!谢谢