Django:选择列总和等于某个常量的位置

时间:2012-10-14 10:07:47

标签: python sql django django-orm

我已经搜索了文档,但我无法找到一种简单的方法来运行这样的查询:

SELECT columns FROM table WHERE col_a + col_b = @param

我知道我可以使用.extra(where=['col_a + col_b = %s' % whatever]),但这不是参数化的。

有没有办法在ORM中执行此操作(即没有extra)?否则,运行该查询的最简洁方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用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时才获取。