首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:基于相关集合注释值

Django:基于相关集合注释值
EN

Stack Overflow用户
提问于 2018-12-28 09:09:42
回答 1查看 300关注 0票数 1

我正在寻找一种方法来注释聚合过滤相关集的值。

代码语言:javascript
复制
class Location(...
    ...

class Ticket(...
    location = ForeignKey(Location...)
    date = ...
    price = ...

我需要在一个日期范围内注释最高票价。

因此,如果我只设置最近30天,它将返回所有Location对象,并且每个对象都有'max_price‘注释,该注释等于过去30天的最大票价。

门票:

代码语言:javascript
复制
<Ticket France 100 now-50days>
<Ticket France 200 now-20days->
<Ticket France 300 now-20days>
<Ticket Austria 200 now-10days>
<Ticket Austria 50 now-10days>

在这种情况下,queryset返回:

代码语言:javascript
复制
<Location France> + annotated 200
<Location Austria> + annotated 50

有没有可能在一个Query中完成

EN

回答 1

Stack Overflow用户

发布于 2018-12-28 16:55:18

这应该能起到作用:

代码语言:javascript
复制
from django.db.models import Case, Max, Q
date = datetime.datetime.today() - datetime.timedelta(days=30)

events = Locations.objects.annotate(
    max_price=Max('ticket_set__price', filter=Q(ticket_set__date__gte=date))
)

请注意,我在这里使用的是ticket_set,因为我不知道外键上是否有related_name。如果您确实有类似tickets的相关名称,请使用该名称而不是ticket_set

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53952609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档