django ORM 中 icontains 的不同结果

问题描述 投票:0回答:1

我正在使用以下内容过滤 django 数据库(mysql)的结果:

queryset = MyModel.objects.filter(value_name__icontains=search).order_by("pk")


class MyModel(models.Model):
    ...
    value_name = models.CharField(unique=True, max_length=255)
    ...

    class Meta:
        managed = False
        db_table = "my_table"

字段的排序规则值

value_name=utf8mb4_0900_bin

search = "bin"
的值我得到一组结果时, 结果中有子字符串“bin”。

search="Bin"
的值时,我得到另一组结果。 结果中包含子字符串“Bin”。

这两者的结果没有任何交集。

看起来像是排序问题,如何解决这个问题? 我无法更改数据库上的任何内容,因为我只有读取访问权限。

我的django版本是3.2。

我尝试过这个,但没有成功。

value_name = models.CharField(unique=True, max_length=255, db_collation='utf8_general_ci')

python django django-models django-orm
1个回答
0
投票

我怀疑这是整理。

您的表有

managed=False
,因此更改模型上的字段定义来设置排序规则对您没有帮助。您需要检查实际数据库中的表定义 - 如果未在其中定义排序规则,则它将不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.