当前位置: 首页 > 面试题库 >

如何在Django中“按组查询”?

松茂实
2023-03-14
问题内容

(这是SQL连接时线程的django版本:选择一对多关系中的最后一个记录)

假设我有一个客户表和一个采购表。每次购买都属于一个客户。我想获得所有客户的清单以及他们的上一次购买。是否可以在没有原始SQL且没有多个数据库查询的情况下完成?


问题答案:

您可以看一下类似的讨论:

从不同类别获取最新对象的Django查询

据我所知,在Django ORM中没有单步执行此操作的方法。

但是您可以将其分为两个查询:

from django.db.models import Max

bakeries = Bakery.objects.annotate(
    hottest_cake_baked_at=Max('cake__baked_at')
) 
hottest_cakes = Cake.objects.filter(
    baked_at__in=[b.hottest_cake_baked_at for b in bakeries]
)

如果蛋糕的ID与bake_at时间戳一起在进行,则可以简化上面的代码并消除歧义(如果两个蛋糕同时到达,则可以同时获得它们):

from django.db.models import Max

hottest_cake_ids = Bakery.objects.annotate(
    hottest_cake_id=Max('cake__id')
).values_list('hottest_cak‌​e_id', flat=True)

hottest_cakes = Cake.objects.filter(id__in=hottest_cake_ids)


 类似资料:
  • 问题内容: 我在一个模型中有一个领域,例如: 现在,我需要按日期范围过滤对象。 如何过滤日期在和之间的所有对象? 问题答案: 用 或者,如果你只是想按月过滤:

  • 问题内容: 从一个示例中,您可以看到一个多重或查询过滤器: 例如,这导致: 但是,我想从列表中创建此查询过滤器。怎么做? 例如 问题答案: 你可以按以下方式链接查询:

  • 我试图使用Django将PostgreSQL表提取到HTML中,当我在PostgreSQL的查询工具中执行空间查询时,我得到了完美的结果,但当我试图从Django执行相同的脚本时,我得到了所有的数据行。谢谢你提前帮忙。 姜戈剧本 HTML

  • 问题内容: 我查询一个模型: 它返回: 我想要的是知道向我的数据库发送查询的最佳Django方法,例如: 当然,这不起作用。我知道我们可以在上做一些技巧,但我只是好奇地知道如何做而不打补丁。 问题答案: 如果你打算进行聚合,则可以使用ORM的聚合功能: 这导致查询类似于 并且输出将为以下形式

  • 问题内容: 我在Django的管理网站中创建了一个自定义组。 在我的代码中,我想检查用户是否在该组中。我怎么做? 问题答案: 你只需通过上的属性即可访问组。 然后返回。 另外,更直接地,你可以通过以下方式检查用户是否在组中: 注意,它也可以是实际的组对象。

  • 问题内容: 我在一个模型中有一个领域,例如: 现在,我需要按日期范围过滤对象。 如何过滤日期在1-Jan-2019和之间的所有对象31-Jan-2019? 问题答案: 采用 或者,如果你只是想按月过滤: