2017-09-14 67 views
1

我有这样一个模型:Django的ORM:组记录由一个区域,然后让每个组中,最大字段值记录

​​

我想获得的所有对象的列表,价格最在每一天!像这样:

{ 
    2017-01-01: {"date": 2017-01-01, "price": 1000, "volume": 210}, 
    2017-01-02: {"date": 2017-01-02, "price": 1032, "volumne": 242}, 
    . 
    . 
    . 
} 

我可以做一个查询吗?数据库相对较大,并且对日期执行循环不起作用。

+0

我可以很容易地向你展示一个常规查询,但你必须弄清楚如何在你的django环境中工作。如果这就是你想要的,请参阅https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very -simple-sql-query – Strawberry

回答

2

你可以做这样的事情,以获得最大的价格在特定日期

from django.db.models import Max 

Foo.objects.values('date').annotate(max_price=Max('price')) 

编辑:如果你想获得它具有最高价为特定日期整个对象,你可以做到这一点通过OuterRefSubquery,支持在Django 1.11

from django.db.models import Max, Subquery, OuterRef 

subquery = Foo.objects.filter(date=OuterRef('date')).order_by('-price') 
queryset = Foo.objects.filter(price=Subquery(subquery.values('price')[:1])) 

这将创建一个子查询来获得与给定日期的价格最高值的对象,然后通过该子查询过滤的主要查询集。您可以在Django docs阅读更多关于子查询。

+0

这只返回最大价格。我想要具有最高价格的对象! (我也想要它的体积) – Navid777

+0

啊,有意思。更新了我的答案 – arjun27

相关问题