Django ORM:分组依据和最大值

发布于 2024-11-28 09:18:50 字数 365 浏览 1 评论 0原文

我有一个如下所示的模型:

Requests: user, req_time, req_text

在数据库中,记录可以如下所示:

id, user_id, req_time, req_text
1     1      TIMESTAMP  YES
2     1      TIMESTAMP  NO
3     2      TIMESTAMP  YES

等等。

如何编写 Django ORM 查询:按用户对请求进行分组,根据 req_text 过滤请求,并且选择结果结果集的最大 ID。因此,对于每个用户,我将返回一行与过滤条件匹配并且具有最大 id 的行。

I have a model that looks like this:

Requests: user, req_time, req_text

In the DB, the records can look like this:

id, user_id, req_time, req_text
1     1      TIMESTAMP  YES
2     1      TIMESTAMP  NO
3     2      TIMESTAMP  YES

etc.

How do I write a Django ORM query that: groups the Requests by user, filters the Requests based on req_text, and also, select the max id of the resulting result set. So for each user, I will return one row which matches the filter condition and also has the greatest id.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你怎么这么可爱啊 2024-12-05 09:18:50
from django.db.models.aggregates import Max

request_values = Requests.objects.filter(req_text='YES') \
                 .values('user') \
                 .annotate(max_id=Max('id'))

那么 request_values 将如下所示:

[
    {'user': 1, 'max_id': 1},
    {'user': 2, 'max_id': 4},
    {'user': 3, 'max_id': 5},
    {'user': 4, 'max_id': 12},
    ...
]
from django.db.models.aggregates import Max

request_values = Requests.objects.filter(req_text='YES') \
                 .values('user') \
                 .annotate(max_id=Max('id'))

Then request_values will look like this:

[
    {'user': 1, 'max_id': 1},
    {'user': 2, 'max_id': 4},
    {'user': 3, 'max_id': 5},
    {'user': 4, 'max_id': 12},
    ...
]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文