我有一个查询,我可以用原始的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))
答案 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'))