【问题标题】:Reference subquery field for greater than clause in djangodjango中大于子句的引用子查询字段
【发布时间】:2013-04-28 22:46:41
【问题描述】:

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

【问题讨论】:

  • 我的回答没有用吗?

标签: django django-queryset


【解决方案1】:

好吧,您应该使用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'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-04
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 2022-12-01
    • 1970-01-01
    相关资源
    最近更新 更多