python - 基于最新相关模型字段的 Django 过滤器
问题描述
我有一个模型帖子和评论,我正在尝试过滤帖子列表以仅显示在epic_bool
最新评论中具有特定布尔值(此处称为 )的帖子。
我正在尝试如下:
object_list = Post.objects.all()
newest = Comment.objects.filter(
post=OuterRef('pk')
).order_by('-upload_date')
Post.objects.annotate(
is_true=Subquery(newest.values('epic_bool')[:1])
)
object_list = object_list.filter(is_true=True)
但我明白了FieldError
Cannot resolve keyword 'is_true' into field. Choices are: ...
我不明白为什么,因为我正在尝试注释而不是解析字段!?
解决方案
解决方案:
newest = Comment.objects.filter(
post=OuterRef('pk')
).order_by('-upload_date')
object_list = object_list.annotate(
epic_bool=Subquery(newest.values(epic_bool)[:1])
).filter(epic_bool=True)
推荐阅读
- django - 在 ModelForm django 中使用 request.user 初始化表单并隐藏该值
- reactjs - 当页面为 1 时,Material-UI Datagrid 分页从第二页开始
- angular - 如何在 Angular 中模拟 Rxjs 主题
- python - 如何比较 json 文件中的值 [在 Python 中]
- sql-server - 无法安装 SQL 2019
- java - 如何从 Java 编写加密的 ECDSA 私钥文件
- python - 训练后如何向神经网络模型添加更多神经元/过滤器?
- python - 反转字符串(从中心镜像)
- xamarin.forms - Xamarin Forms WebView Navigated 事件未在 iOS 上持续触发
- java - 使用 Java Faker 生成唯一的随机邮政编码