【问题标题】:Get 2 items by one fields and other by chronological按一个字段获取 2 个项目,按时间顺序获取另一个
【发布时间】:2020-08-31 05:11:16
【问题描述】:

我有一个模型:

class Car(models.Model):
   price = models.IntegerField()
   created_at = models.DateTimeField(auto_now_add=True)
   ....

我想创建查询集,在其中我得到一个列表,其中 2 个第一个元素将是价格最高的汽车,其他元素按时间顺序 created_at。

我将感谢任何提议,例如 SQL 或 Queryset。向 db 发出一个请求会很高兴。

【问题讨论】:

    标签: sql postgresql django-rest-framework django-queryset


    【解决方案1】:

    以最高的价格获得前两辆车

    q1 = Car.objects.order_by('price')[:1]
    

    按照 created_at 顺序休息

    qs2 = Car.objects.exclude(id__in=qs)
    

    您将有两个查询集,您可以同时使用这两个。

    更新:

    q = q1.union(q2)
    

    现在,q 是一个查询集,尚未对数据库进行任何查询,您可以执行任何与分页等相关的任务。

    【讨论】:

    • 是的,很简单,但是我想要一个查询集并请求数据库。它也将在 ModelViewSet 上使用,因此它将具有分页列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    相关资源
    最近更新 更多