我正在使用以下内容过滤 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')
我怀疑这是整理。
您的表有
managed=False
,因此更改模型上的字段定义来设置排序规则对您没有帮助。您需要检查实际数据库中的表定义 - 如果未在其中定义排序规则,则它将不起作用。