python - 如何使用附加过滤的相关对象作为 Django 中的字段来获取结果?
问题描述
我想在一个查询中获取所有数据,所以我需要通过它的过滤器从相关对象中添加一些字段结果(而不是通过父对象过滤器)。
def get_queryset(self):
return Mailbox.objects\
.filter(owner=self.request.user.id)\
.prefetch_related('letter_set')\
.annotate(
new_letter_count=Count(
'letter',
filter=Q(letter__read_at=None)
),
total_count=Count('letter'),
latest_letter_datetime=Max('letter__created_at'),
### #################### ###
### THE QUESTION IS HERE ###
### #################### ###
latest_letter_CONTENT= #(What code here could be work?)#
### I wnat to get the latest letter content
)
解决方案
好吧,我会假设模型中有 a指向ForeignKey
模型来回答这个问题。Letter
MailBox
您可以为此使用子查询:
# I'm assuming here a couple of things:
# The fields content and date_created exist in your Letter model,
# if there is no date created field, use instead whatever you are using for
# establish some sort of order creation.
MailBox.objects.annotate(
last_letter_content = Subquery(
Letter.objects.filter(mailbox=OuterRef('pk')).order_by('-date_created').values('content')[:1]
)
)
推荐阅读
- docker - 如何使用 Docker 公开一系列 UDP 端口
- python - Matplotlib 在所有子图上绘制相同的点
- kubernetes - 由于内存不足,部署失败
- ios - 无法在设备上安装 iOS 应用程序。域:com.apple.dt.MobileDeviceErrorDomain 代码:-402653179
- datetime - 按星期几过滤并按小时汇总
- haskell - 使用 Scotty,我如何将 ScottyM 与自定义 monad 与 ScottyT 结合起来
- c - C 进程在 fork() 之后打印两次,即使它在父进程内部并且我刷新标准输出
- jsf - p:imageSwitch显示图像不正确,将所有图像一起显示
- javascript - 如何在 Javascript 文件中使用 Django url 模板
- swift - 使用 Parse iOS SDK 和 Facebook 构建错误