如何使用带有Django ORM的数据库函数进行查询?

2024-05-13 01:18:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在Django ORM中使用WHERE子句查询数据库:

WHERE LOWER(col_name) = %s

或者

^{pr2}$

如何使用QuerySetAPI实现这一点?在


Tags: djangonameormcolwherelower子句查询数据库
1条回答
网友
1楼 · 发布于 2024-05-13 01:18:54

可以使用extra使用sql函数添加自定义where条件:

Author.objects.extra(where=["lower(name) = lower(%s)"], params=['Fabio'])

您希望使用params,而不是直接在查询中嵌入值,从而通过让Django为您转义params来避免SQL注入。在

如果您可以避免对传递的参数使用sql LOWER函数(在我的示例“Fabio”)上,那么可以使用annotate

^{pr2}$

注意,your_name.lower()使用的是pythonlower函数,而不是sql函数。在

我找不到一种方法将annotate与F()Lower()from django.db.models.functions import Lower)一起使用,以将Lower应用于自定义输入,而不是另一个字段。在

相关问题 更多 >