【问题标题】:Django filter based on field of latest related model基于最新相关模型字段的 Django 过滤器
【发布时间】:2020-08-15 06:33:11
【问题描述】:

我有一个模型帖子和评论,我正在尝试过滤帖子列表以仅在最新评论中显示具有特定布尔值(此处称为 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: ...

我不明白为什么,因为我试图注释而不是解析字段!?

【问题讨论】:

    标签: python django


    【解决方案1】:

    解决方案:

        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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      • 2018-03-01
      • 1970-01-01
      • 2021-11-03
      • 2020-10-30
      • 2017-06-22
      • 2021-12-27
      相关资源
      最近更新 更多