如何查询满足predi的相关记录的最大计数

2024-10-01 15:31:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个Django应用程序,我遇到了一个棘手的聚合查询,我想对其进行评估。在

在我项目的demo应用程序中,我声明了以下模型类来表示库的持有量:

from django.db import models

class Book(models.Model):
    interesting = models.BooleanField()

class Library(models.Model):
    books = models.ManyToManyField(Book)

我想查询的是单个图书馆中“有趣”图书的最大数量,即每个图书馆“有趣”图书的最大数量。在

在SQL中,这是:

^{pr2}$

使用以下测试数据:

insert into demo_library(id) values (1), (2), (3);
insert into demo_book(id, interesting) values
(1, FALSE), (2, FALSE), (3, TRUE),
(4, TRUE), (5, TRUE),
(6, TRUE), (7, TRUE), (8, TRUE), (9, FALSE);
insert into demo_library_books(library_id, book_id) values
(1, 1), (1, 2), (1, 3),
(2, 4), (2, 5),
(3, 6), (3, 7), (3, 8), (3, 9), (3, 3);

上述SELECT语句的结果是:

 max
-----
   4
(1 row)

一如预期。在

可以使用Django的查询API来计算这个值吗?在


Tags: djangoidfalsetrue应用程序modeldemomodels
1条回答
网友
1楼 · 发布于 2024-10-01 15:31:44

我想我明白了:

Library.objects.filter(books__interesting=True).annotate(num_interesting_books=Count('pk')).aggregate(max=Max('num_interesting_books'))

转换为SQL,即:

^{pr2}$

相关问题 更多 >

    热门问题