引用django中大于子句的子查询字段

时间:2013-04-28 22:46:42

标签: django django-queryset

我有一个查询,我可以用原始的SQL,但我试图将其转换为使用Django ORM。查询是:

 SELECT a.journey_pattern_ref_id
 FROM(
     SELECT * FROM journeypatterntiminglink
     WHERE from_stop_id = '0180BAC30249'
 ) a,
 journeypatterntiminglink b
 WHERE a.journey_pattern_ref_id = b.journey_pattern_ref_id
 AND b.to_stop_id = '0180BAC30035'
 AND b.to_seq_no > a.from_seq_no;

给我带来麻烦的部分是b.to_seq_no > a.from_seq_no。到目前为止我已经

jps = (JourneyPattern.objects                                                                                                       
           .filter(journeypatterntiminglink__from_stop=origin)
           .filter(journeypatterntiminglink__to_stop=destination)) 

1 个答案:

答案 0 :(得分:0)

那么,您应该使用F() expressions来引用查询构造中的其他字段而不是常量。

从您的问题中推断出您的模型定义应该是这样的:

from django.db.models import F

jps = (JourneyPattern.objects
       .filter(journeypatterntiminglink__from_stop=origin)
       .filter(journeypatterntiminglink__to_stop=destination)
       .filter(journeypatterntiminglink__to_seq_no__gt=F('journeypatterntiminglink__from_seq_no'))