Django 模型中的 lower()

lower() in django model

这是我的查询

SELECT * FROM `music` where lower(music.name) = "hello"

如何使用 django 发送此查询

我试过了,但它没有在查询中添加更低的值

>>> Music.objects.filter(name__iexact="hello")
(0.144) SELECT `music`.`id`, `music`.`name`, `music`.`artist`, `music`.`image`, `music`.`duration`, `music`.`release_date`, `music`.`is_persian` FROM `music` WHERE `music`.`name` LIKE 'hello' LIMIT 21; args=('hello',)
<QuerySet []>

您可以使用 Lower database function 如下。

>>> from django.db.models.functions import Lower
>>> lower_name_music = Music.objects.annotate(lower_name=Lower('name'))
>>> lower_name_music.filter(lower_name__iexact="hello")
  • 第一个语句是导入数据库函数

  • 第二条语句是添加名为 lower_name 的计算列,使用 name 列上的较低函数。此时数据库还没有 查询了。

  • 第三条语句是使用计算列进行过滤。作为这个 语句打印出结果,实际执行查询 数据库.