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

BJ *_*mer 1 django

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

  • 一个Question模型

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

  • 一个Flag模型,带有一个ForeignKey答案.(答案可能被标记为不合适.)

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

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

Question.objects.filter(answer__user=user).\
                 filter(answer__flag__isnull=False).distinct()
Run Code Online (Sandbox Code Playgroud)

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

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

如果不清楚,请告诉我.

Ben*_*end 6

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

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

Question.objects.filter(answer__user=user, answer__flag__isnull=False)
Run Code Online (Sandbox Code Playgroud)