有没有办法使用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子句添加字段)。
如果我使用上述查询给ModelViewSet
(RawQuerySet
} 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}}。
有人能指出我正确的方向吗?提前谢谢。