0

我有一个可以使用原始 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)) 
4

1 回答 1

0

好吧,您应该使用F() 表达式来引用查询构造中的其他字段,而不是常量。

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

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'))
于 2013-04-29T01:26:14.087 回答