使用Django的ORM关联子查询

时间:2014-12-03 16:13:56

标签: python django django-rest-framework correlated-subquery django-filter

有没有办法使用Django的ORM建模相关子查询?我是否在某处的文档中忽略了这一点?

我使用的是Python 3.3,Django 1.7和Django REST Framework 3.0.0。这完全是针对遗留数据库的 - Django模型处于Managed = False模式。

在我的ModelViewSets之一中,我试图设置queryset。如果我正在编写SQL,我需要的是:

select * from table
where dateField = (
    select max(dateField)
    from table lookup
    where lookup.varField = table.varField
)

我还需要对此查询执行.filter()(向外部查询中的WHERE子句添加字段)。

如果我使用上述查询给ModelViewSetRawQuerySet} model.objects.raw()filter_fields有效,但我无法使用ModelViewSet过滤annotate {1}}。

使用TableModel.objects.values('varField').annotate(dateField=Max('dateField')).filter(varField='aString')

,我得到的结果有些接近
values()

但是,我需要表中的所有列,如果我只使用GROUP BY,ORM会将每个字段放在其varField子句中,而我只需要GROUP BY {{1}} 1}}。

有人能指出我正确的方向吗?提前谢谢。

0 个答案:

没有答案