【问题标题】:Django aggregate min/max with other fieldsDjango 与其他字段聚合最小值/最大值
【发布时间】:2015-09-25 03:01:59
【问题描述】:

我是wounder,我可以转换这个sql吗:

SELECT MIN(price) min_price, * FROM table GROUP BY YEAR(date), MONTH(date);

使用 Django ORM ? 我需要每个月以最低价格购买一件物品。所以我尝试使用聚合():

Model.objects.filter(*filtering*).aggregate(Min('price'))

但它丢失了其他字段,仅显示“价格” 尝试过,发布我需要的字段:

Model.objects.values(*some fields*).filter(*filtering*).aggregate(Min('price'))

但在此之后我没有得到任何字段!甚至价格。 所以我也需要一个具有最低价格和其他字段的对象

【问题讨论】:

    标签: django aggregate-functions


    【解决方案1】:

    您是否尝试过使用 .order_by()?

    例如:

    YourModel.objects.all().order_by(min_price)[:1]
    

    当您想要获取模型字段的值时,您可以使用模板标签来访问它们,例如 {{ YourModel.yourModelField }}

    如果你想在模板之外访问它们,你必须这样做

    mymodel = YourModel.objects.all().order_by(min_price)[:1]
    print(mymodel.yourModelField)
    

    print() 是一个例子

    【讨论】:

    • 感谢您的回答,但这不是我需要的。我每个月需要一排最低价格。你的例子只会给我一行......你建议我“SELECT * FROM table ORDER BY min_price LIMIT 1;”但我需要:“SELECT MIN(price) min_price, * FROM table GROUP BY YEAR(date), MONTH(date);”结果,我必须看到很多行,但每个月只有一行,该月的最低价格
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多