Python Django选择来自QuerySet的结果

Python Django选择来自QuerySet的结果,python,django,Python,Django,我试图将下面的原始SQL查询转换为Django,但我无法理解它。这很简单: select * from (select field1, field2, field3, myfunc(field1, field2) as result from my_table) as a where a.result>0 其中myfuncfield1、field2是用户定义的函数。我已经设法做到了: my_table.objects.all().annotate(result=RawSQL("myfu

我试图将下面的原始SQL查询转换为Django,但我无法理解它。这很简单:

select * from (select field1, field2, field3, myfunc(field1, field2) as result 
from my_table) as a where a.result>0
其中myfuncfield1、field2是用户定义的函数。我已经设法做到了:

my_table.objects.all().annotate(result=RawSQL("myfunc(field1, field2)", ()))
.filter(result__gt=0)
但这意味着:

select field1, field2, field3, myfunc(field1, field2) as result 
from my_table where myfunc(field1, field2)>0
这给出了正确的答案,但它对“myfunc”求值两次——我不希望这样,因为它现在是一个有点耗时的函数


有没有办法在查询集上进行选择?

您是否也需要结果,或者您只是对其是否大于感兴趣?我需要完整的结果。我想不出一种方法让查询只执行一次,恐怕我也找不到重复的结果,但第一个问题很好。顺便说一句,这里不需要什么