首页 文章

Django过滤器对相关模型有两个约束

提问于
浏览
1

我有一个django应用程序,模型如下:

  • A Question 型号

  • 一个 Answer 模型,将ForeignKey返回问题 . (一个问题可以有多个答案 . )

  • A Flag 型号,带有答案的ForeignKey . (答案可能被标记为不合适 . )

以上所有内容都有一个 user 字段,用于定义创建该对象的用户 .

我正在尝试获取所有问题的列表,其中包含当前用户已被标记的答案 . 我试过这个:

Question.objects.filter(answer__user=user).\
                 filter(answer__flag__isnull=False).distinct()

...但我相信这将返回一个问题列表,其中包含当前用户的答案以及已被标记的答案,但不一定能保证它是已被标记的用户答案 .

是否有捷径可寻?基本上,我想让过滤器的 answer 部分引用它们的相同答案 .

如果不清楚,请告诉我 .

2 回答

  • 0

    查询完全符合您的要求,但您应该过滤标志为 not null 的问题 . 链接过滤器一起编辑,因此它会过滤掉所有具有特定用户答案的问题,然后针对标记的答案过滤该集合 .

    您也可以将这两个标准放在同一个 filter 电话中:

    Question.objects.filter(answer__user=user, answer__flag__isnull=False)
    
  • 6

    怎么样:

    questions = [a.question for a in user.answer_set.filter(flag__isnull=True)]
    

    编辑:当然,这不会返回查询集 . 并且为了防止重复的问题,可以将列表理解包装在set()中 .

相关问题