2013-04-28 102 views
0

我有一个查询,我可以用原始sql做但我试图将其转换为使用Django ORM。该查询是:django中的大于子句的引用子查询字段

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)) 
+0

难道不是我的回答工作? – 2013-04-29 03:11:12

回答

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'))