我搜索了文档,但找不到像这样运行查询的简单方法:
SELECT columns FROM table WHERE col_a + col_b = @param
我知道我可以使用.extra(where=['col_a + col_b = %s' % whatever])
,但这不是参数化的。
有没有办法在 ORM 中做到这一点(即没有extra
)?否则,运行该查询的最简洁方式是什么?
我搜索了文档,但找不到像这样运行查询的简单方法:
SELECT columns FROM table WHERE col_a + col_b = @param
我知道我可以使用.extra(where=['col_a + col_b = %s' % whatever])
,但这不是参数化的。
有没有办法在 ORM 中做到这一点(即没有extra
)?否则,运行该查询的最简洁方式是什么?
您可以尝试使用 F() 表达式进行过滤。见这里:https ://docs.djangoproject.com/en/dev/topics/db/queries/#filters-can-reference-fields-on-the-model
尝试这个:
from django.db.models import F
Something.objects.filter(col_a=CONST-F('col_b'))
还没有尝试过,但它可能会像这样工作:如果 CONST = 10 并且如果 B 列是例如 8,那么仅当 A 列是 2 时才获取。